From 211b3ff244c33908f0e8c633e773a098bfee8eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Thu, 29 Feb 2024 11:54:57 +0000 Subject: [PATCH] fix(publish): print a warning when .jsx or .tsx is imported (#22631) This commit adds a warning when .jsx or .tsx is encountered during publishing. This is a stop-gap solution before we fix it proper. --- cli/tools/registry/diagnostics.rs | 53 +++++++++++++++++- cli/tools/registry/tar.rs | 8 +++ tests/integration/publish_tests.rs | 8 +++ .../preact-render-to-string-6.4.0.tgz | Bin 0 -> 127653 bytes .../preact-render-to-string/registry.json | 1 + .../npm/registry/preact/preact-10.19.6.tgz | Bin 0 -> 364392 bytes .../npm/registry/preact/registry.json | 1 + .../pretty-format/pretty-format-3.8.0.tgz | Bin 0 -> 5935 bytes .../npm/registry/pretty-format/registry.json | 1 + .../publish/unsupported_jsx_tsx/foo.jsx | 5 ++ .../publish/unsupported_jsx_tsx/foo.tsx | 5 ++ .../publish/unsupported_jsx_tsx/jsr.jsonc | 11 ++++ .../publish/unsupported_jsx_tsx/mod.out | 17 ++++++ .../publish/unsupported_jsx_tsx/mod.ts | 7 +++ 14 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 tests/testdata/npm/registry/preact-render-to-string/preact-render-to-string-6.4.0.tgz create mode 100644 tests/testdata/npm/registry/preact-render-to-string/registry.json create mode 100644 tests/testdata/npm/registry/preact/preact-10.19.6.tgz create mode 100644 tests/testdata/npm/registry/preact/registry.json create mode 100644 tests/testdata/npm/registry/pretty-format/pretty-format-3.8.0.tgz create mode 100644 tests/testdata/npm/registry/pretty-format/registry.json create mode 100644 tests/testdata/publish/unsupported_jsx_tsx/foo.jsx create mode 100644 tests/testdata/publish/unsupported_jsx_tsx/foo.tsx create mode 100644 tests/testdata/publish/unsupported_jsx_tsx/jsr.jsonc create mode 100644 tests/testdata/publish/unsupported_jsx_tsx/mod.out create mode 100644 tests/testdata/publish/unsupported_jsx_tsx/mod.ts diff --git a/cli/tools/registry/diagnostics.rs b/cli/tools/registry/diagnostics.rs index 78cc6f5552..ff86e68fbe 100644 --- a/cli/tools/registry/diagnostics.rs +++ b/cli/tools/registry/diagnostics.rs @@ -14,6 +14,8 @@ use deno_ast::diagnostics::DiagnosticSnippetHighlightStyle; use deno_ast::diagnostics::DiagnosticSourcePos; use deno_ast::diagnostics::DiagnosticSourceRange; use deno_ast::swc::common::util::take::Take; +use deno_ast::SourcePos; +use deno_ast::SourceRanged; use deno_ast::SourceTextInfo; use deno_core::anyhow::anyhow; use deno_core::error::AnyError; @@ -31,7 +33,10 @@ impl PublishDiagnosticsCollector { pub fn print_and_error(&self) -> Result<(), AnyError> { let mut errors = 0; let mut has_slow_types_errors = false; - let diagnostics = self.diagnostics.lock().unwrap().take(); + let mut diagnostics = self.diagnostics.lock().unwrap().take(); + + diagnostics.sort_by_cached_key(|d| d.sorting_key()); + for diagnostic in diagnostics { eprint!("{}", diagnostic.display()); if matches!(diagnostic.level(), DiagnosticLevel::Error) { @@ -92,6 +97,38 @@ pub enum PublishDiagnostic { text_info: SourceTextInfo, referrer: deno_graph::Range, }, + UnsupportedJsxTsx { + specifier: Url, + }, +} + +impl PublishDiagnostic { + fn sorting_key(&self) -> (String, String, Option) { + let loc = self.location(); + + let (specifier, source_pos) = match loc { + DiagnosticLocation::Module { specifier } => (specifier.to_string(), None), + DiagnosticLocation::Path { path } => (path.display().to_string(), None), + DiagnosticLocation::ModulePosition { + specifier, + source_pos, + text_info, + } => ( + specifier.to_string(), + Some(match source_pos { + DiagnosticSourcePos::SourcePos(s) => s, + DiagnosticSourcePos::ByteIndex(index) => { + text_info.range().start() + index + } + DiagnosticSourcePos::LineAndCol { line, column } => { + text_info.line_start(line) + column + } + }), + ), + }; + + (self.code().to_string(), specifier, source_pos) + } } impl Diagnostic for PublishDiagnostic { @@ -107,6 +144,7 @@ impl Diagnostic for PublishDiagnostic { DuplicatePath { .. } => DiagnosticLevel::Error, UnsupportedFileType { .. } => DiagnosticLevel::Warning, InvalidExternalImport { .. } => DiagnosticLevel::Error, + UnsupportedJsxTsx { .. } => DiagnosticLevel::Warning, } } @@ -119,6 +157,7 @@ impl Diagnostic for PublishDiagnostic { DuplicatePath { .. } => Cow::Borrowed("case-insensitive-duplicate-path"), UnsupportedFileType { .. } => Cow::Borrowed("unsupported-file-type"), InvalidExternalImport { .. } => Cow::Borrowed("invalid-external-import"), + UnsupportedJsxTsx { .. } => Cow::Borrowed("unsupported-jsx-tsx"), } } @@ -135,6 +174,7 @@ impl Diagnostic for PublishDiagnostic { Cow::Owned(format!("unsupported file type '{kind}'")) } InvalidExternalImport { kind, .. } => Cow::Owned(format!("invalid import to a {kind} specifier")), + UnsupportedJsxTsx { .. } => Cow::Borrowed("JSX and TSX files are currently not supported"), } } @@ -174,6 +214,9 @@ impl Diagnostic for PublishDiagnostic { column: referrer.start.character, }, }, + UnsupportedJsxTsx { specifier } => DiagnosticLocation::Module { + specifier: Cow::Borrowed(specifier), + }, } } @@ -221,6 +264,7 @@ impl Diagnostic for PublishDiagnostic { description: Some("the specifier".into()), }, }), + PublishDiagnostic::UnsupportedJsxTsx { .. } => None, } } @@ -237,7 +281,8 @@ impl Diagnostic for PublishDiagnostic { PublishDiagnostic::UnsupportedFileType { .. } => Some( Cow::Borrowed("remove the file, or add it to 'publish.exclude' in the config file"), ), - PublishDiagnostic::InvalidExternalImport { .. } => Some(Cow::Borrowed("replace this import with one from jsr or npm, or vendor the dependency into your package")) + PublishDiagnostic::InvalidExternalImport { .. } => Some(Cow::Borrowed("replace this import with one from jsr or npm, or vendor the dependency into your package")), + PublishDiagnostic::UnsupportedJsxTsx { .. } => None, } } @@ -272,6 +317,9 @@ impl Diagnostic for PublishDiagnostic { Cow::Borrowed("this specifier is not allowed to be imported on jsr"), Cow::Borrowed("jsr only supports importing `jsr:`, `npm:`, and `data:` specifiers"), ]), + PublishDiagnostic::UnsupportedJsxTsx { .. } => Cow::Owned(vec![ + Cow::Borrowed("follow https://github.com/jsr-io/jsr/issues/24 for updates"), + ]) } } @@ -293,6 +341,7 @@ impl Diagnostic for PublishDiagnostic { PublishDiagnostic::InvalidExternalImport { .. } => { Some(Cow::Borrowed("https://jsr.io/go/invalid-external-import")) } + PublishDiagnostic::UnsupportedJsxTsx { .. } => None, } } } diff --git a/cli/tools/registry/tar.rs b/cli/tools/registry/tar.rs index 2dd160a0ad..d24d8abaa0 100644 --- a/cli/tools/registry/tar.rs +++ b/cli/tools/registry/tar.rs @@ -154,6 +154,14 @@ pub fn create_gzipped_tarball( source_parser, diagnostics_collector, )?; + + let media_type = MediaType::from_specifier(&specifier); + if matches!(media_type, MediaType::Jsx | MediaType::Tsx) { + diagnostics_collector.push(PublishDiagnostic::UnsupportedJsxTsx { + specifier: specifier.clone(), + }); + } + files.push(PublishableTarballFile { path_str: path_str.clone(), specifier: specifier.clone(), diff --git a/tests/integration/publish_tests.rs b/tests/integration/publish_tests.rs index fafc018f97..745736d656 100644 --- a/tests/integration/publish_tests.rs +++ b/tests/integration/publish_tests.rs @@ -257,6 +257,14 @@ itest!(jsr_jsonc { http_server: true, }); +itest!(unsupported_jsx_tsx { + args: "publish --token 'sadfasdf'", + cwd: Some("publish/unsupported_jsx_tsx"), + output: "publish/unsupported_jsx_tsx/mod.out", + envs: env_vars_for_jsr_npm_tests(), + http_server: true, +}); + #[test] fn ignores_gitignore() { let context = publish_context_builder().build(); diff --git a/tests/testdata/npm/registry/preact-render-to-string/preact-render-to-string-6.4.0.tgz b/tests/testdata/npm/registry/preact-render-to-string/preact-render-to-string-6.4.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..040429ffdf5e65409e5beb41fb3c44160909c6dd GIT binary patch literal 127653 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
? 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

5h5y8)VpURudXUM>7I8nq_9?e-28 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

%8(ctFo+wGo|63 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 V`}ObFzaR7O{{!t^`6U1z2LP&bLaP7( literal 0 HcmV?d00001 diff --git a/tests/testdata/npm/registry/preact-render-to-string/registry.json b/tests/testdata/npm/registry/preact-render-to-string/registry.json new file mode 100644 index 0000000000..5a7bbbc4d0 --- /dev/null +++ b/tests/testdata/npm/registry/preact-render-to-string/registry.json @@ -0,0 +1 @@ +{"_id":"preact-render-to-string","_rev":"121-a8123a0a5973986b3a4018df394a061a","name":"preact-render-to-string","description":"Render JSX to an HTML string, with support for Preact components.","dist-tags":{"latest":"6.4.0","next":"5.0.6","experimental":"6.0.0-experimental.0"},"versions":{"1.0.0":{"name":"preact-render-to-string","version":"1.0.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","photon","electron"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"ISC","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"5e13ddcf1f35a5fbbc617cb15913d64c37dda179","_id":"preact-render-to-string@1.0.0","_shasum":"0526ef3f022975168b93ab04399f66acdecbed5b","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"0526ef3f022975168b93ab04399f66acdecbed5b","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.0.0.tgz","integrity":"sha512-bvTVPexy/bsxN5l4v6USqu8saf2IsTL7wGPUpnPWIbDLXu8W/Wo5uQGJZF2JXImEqMbAQJymzbW+T3A9Mx45Qw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv0BcQOM9/bY7Z3wrfM0G2Xqeker2SrlaCJuZXkUw4UAIgBVGOYz2eiJj/ACM3AO+LnHxwWx8Dk4bJiOEvbSq4AhU="}]},"directories":{}},"1.1.0":{"name":"preact-render-to-string","version":"1.1.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"ISC","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"a62705fd066ff0aca3c7870cd909361507731474","_id":"preact-render-to-string@1.1.0","_shasum":"5079e3cf905e32e3bd2a308b565249bac23ce305","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"5079e3cf905e32e3bd2a308b565249bac23ce305","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.1.0.tgz","integrity":"sha512-5MgUdfsEHDrigJNz3zefcZ0FWlZ0FtwdvMsOwhLhMzHbkN+EMouRBpDopCL4xlquhiq3xAyW7qd87x8dXe+sGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEog/CZ0v7NIlfkfKUA5T8JzCbqHpJ2EdpRFTgsildOzAiBAfBQVBMeADwd6M8KVtBZwU4o7+r97Ybn/+Ztdxs/9tw=="}]},"directories":{}},"1.1.1":{"name":"preact-render-to-string","version":"1.1.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"34ac3812263a899ae47d658c5a0f0d346293e229","_id":"preact-render-to-string@1.1.1","_shasum":"7cd24809afcd1b1590bd30fe23f353ab5428a2d5","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"7cd24809afcd1b1590bd30fe23f353ab5428a2d5","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.1.1.tgz","integrity":"sha512-/ln2hwTSeWJ8ESf5vAsFIl22HSPb2wJZlZ24zxe5FjiHJwdcuow+L6KPwJjKv2wB2I2K1BDKb2hHAph7Gez4+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBhcQFq3tRGXWvleYtqaEot6GztB5QP8b+nOjHUk3EeeAiBmNZcg6F/mA6T/380Sg8cfhkFgDcVTmxAqJpCGcIu/EA=="}]},"directories":{}},"1.1.3":{"name":"preact-render-to-string","version":"1.1.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^1.5.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"47f326608bec89a0c5bf01e742e287f346121b29","_id":"preact-render-to-string@1.1.3","_shasum":"09832db0d64c99d4a05f62d709c5e0c725fb7958","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"09832db0d64c99d4a05f62d709c5e0c725fb7958","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.1.3.tgz","integrity":"sha512-oI/23MMcwv5sFoDtbIahvs4gfmfRCvcRuk7Sh6zyFLNMZjkvXlQjb0srP5HqY9ezY0DdJp077SFgUhKbsI9Tfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCX44KcPEJF30HPoI+m+tqrA+jX67sHN1D6auMb6vixhQIhAKRe5HPCOw+EDmS2y0yDJIJV8G69X98/HIaQHzCwQn/q"}]},"directories":{}},"1.2.0":{"name":"preact-render-to-string","version":"1.2.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^1.5.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"54426e28356c732734ca2ebee6486ba81aacfedf","_id":"preact-render-to-string@1.2.0","_shasum":"cace996f1a9aa98a44bdb5a69ed07e88a36820f6","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"cace996f1a9aa98a44bdb5a69ed07e88a36820f6","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.2.0.tgz","integrity":"sha512-1as7zJvREC0z098YW8FUYmEF2nEdWe5cDpS+eXzAv/7yRmnFZqiyBM8+QL+9UYqYW4Ku8FcdhNi0taNxRMzwsQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE1c19L9tmZBq/GLdeftpXjZ+tzN8Fca6mOsgkO51j+NAiEAhMpQkYD7sreDiLHD3FhXLv0y5fQUBn2BRQMHcZhv5Kg="}]},"directories":{}},"1.3.0":{"name":"preact-render-to-string","version":"1.3.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^1.5.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"4eabc1f4dd4490eee1968a8e3651abfa0d2b1e43","_id":"preact-render-to-string@1.3.0","_shasum":"7686eb671eb0be5f71c97b5454198543ed2cb21c","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"7686eb671eb0be5f71c97b5454198543ed2cb21c","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.3.0.tgz","integrity":"sha512-DIJx3uVLlfPFwD18f5+TpY9SoEqtmiCZogfH4+o5k92I6OeQnfo9krdMXnDAYWEhszeL09OdqdpVTk3VcSFqJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEPeRb1WYJLXRnyBdjxlLJDN6gkPdEL8Glc/Z0LmWE4AIhAMPNJGDQuxyl4VUMaJl9qDrbyKeJhGbagFOwsgtmDD54"}]},"directories":{}},"1.4.0":{"name":"preact-render-to-string","version":"1.4.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^1.5.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"bd43a74ad7178f2d0e6fae8b6b12370eb26c53fd","_id":"preact-render-to-string@1.4.0","_shasum":"b3d7f15741aed112914e99cc68dbbdb303623c8e","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"b3d7f15741aed112914e99cc68dbbdb303623c8e","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.4.0.tgz","integrity":"sha512-hSHv6CSb4wnEyByqYhrdGmxwYJk81a4N5qnJPnWWn+OwO0wfIkMtGpBuoQ74saMwthvjqHCWr63RBCJxtoRdow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGbeYuOkmt6hbB0SubIMMo0+Vu8K6BaHCRqjJfFxyy58AiEAtS/QCqMMoL2YAZ8OLQBSQfGqaMHLgWOG8jqJ5xQa++M="}]},"directories":{}},"1.4.1":{"name":"preact-render-to-string","version":"1.4.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^1.5.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"c12691e24912d4c05ec58956dbedbf5e0b9aeb73","_id":"preact-render-to-string@1.4.1","_shasum":"ba097fa202b12edda941af579f0aec873bdc6246","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"ba097fa202b12edda941af579f0aec873bdc6246","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.4.1.tgz","integrity":"sha512-WRqGY5I0kV9+8nkUtDpNXzkeQ3PgyRA42kwiHjCizY0TBql2rRUU9Ytz0HB99eBzvdU8aJzAG0eWfBBeob0T0g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEFZuvlXNc3nSmlraXG+ncQFkp3SQoAzQEiM4nb+k7rQIhAO87QbOMW9TJWMXpncWUuhUMmnQBI2WZPgL4lKUG9Xpf"}]},"directories":{}},"1.4.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"1.4.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^1.5.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"aa664a1ab0e2ff79e3c55eb9e3b1503b9708adb3","_id":"preact-render-to-string@1.4.2","_shasum":"87f93a55f9e51fccaa2e3fc0c79dbaec4a186720","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"87f93a55f9e51fccaa2e3fc0c79dbaec4a186720","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-1.4.2.tgz","integrity":"sha512-eZzBDp5Hqdx6S0zFeEwh4mybMvcTYtR6+QJGKSE7rnryRavKhjYVO0buAVRjZiPAKcnhKl4G6RlzPA2NqKrlUg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB00owOIA4MXfXVmc6WoAZgWvLCaNtFtmNlFiuYu0grjAiEAqtwvJ0W3lCx0DU+h6r/xod6v9uvv2uTikxAXO+ttv6w="}]},"directories":{}},"2.0.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.0.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^3.3.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"4d32684cb4a73842af91c5290ff6395292f4c838","_id":"preact-render-to-string@2.0.0","_shasum":"d5c9332e168efd37ba8b003b16f9d18f6a90d27b","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"d5c9332e168efd37ba8b003b16f9d18f6a90d27b","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.0.0.tgz","integrity":"sha512-EjSvuZVBbga0p6aa6+Zp2wV1EJsF6hyeKhjkO7vm49Y61rp/RFtcERgjIkUfaP+10PvaS6hhEKY5KQo8CinvWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJj69fVjFnZE6GK0Wp66IKo29x4/K25PlBQSywVnaBLgIgaolKYdUT0vZ4aDd36/aBkOTGT2RUC9skZfvi3Bw2yxw="}]},"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.0.0.tgz_1455394660354_0.6050198404118419"},"directories":{}},"2.0.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.0.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^3.3.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"6dca5942ec45726dc9e34ff07e8667b65a002e37","_id":"preact-render-to-string@2.0.1","_shasum":"6af48c711126b21e79b29cc8ad6f48fa3d1ee440","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"6af48c711126b21e79b29cc8ad6f48fa3d1ee440","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.0.1.tgz","integrity":"sha512-lyzzUlvx0Z3UYh6/+C+YNtDTC8Ur5wLHvJCNnMHDJgoM0UdLCKBN4rC1WJRdFkJkJc1P80+shJb/puOdYZucsg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBL7NRx961+PR5dtoQPtxfK8eBivjw/w4oWND4mCVZXmAiAITAg+ttYF47oaAsAyn54MtW/m4fYPoVo0QsZXL9n3Xg=="}]},"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.0.1.tgz_1456448417972_0.5634643277153373"},"directories":{}},"2.1.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.1.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"3c1b2bd12d4c8f33fa01e3c6b4d600ecf275ac3d","_id":"preact-render-to-string@2.1.0","_shasum":"a65b1f8e1e73c5a4a3bf04aeac9d345b588d3779","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"a65b1f8e1e73c5a4a3bf04aeac9d345b588d3779","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.1.0.tgz","integrity":"sha512-8BSgGV70KLTZQ7IQtHKnNPDpABtYJ6lAQnMQFdzl2tcEFJ/yy7sjZwVsNPMUttq1g7QNxYzR5xZmcYt4iiADDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSs/w8T34Nymk/NsdCOGJBSLk2oZVolvX8bWK4jBgHpQIhAI0K3ozGpLmf+zAnT+hcjDxgOLrn3TQPIojcH2gRf+AF"}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.1.0.tgz_1457663513026_0.5987188837025315"},"directories":{}},"2.2.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.2.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"c51aff18849f13a772ad64edfd94b10e1c94f031","_id":"preact-render-to-string@2.2.0","_shasum":"0e6e4afba560f718a8fa0920c9ff81d23e4426af","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"0e6e4afba560f718a8fa0920c9ff81d23e4426af","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.2.0.tgz","integrity":"sha512-X+Ybx+epd298tKUPhzVf24jrsKDG9A8DWfEufE3ui/OLBmlSu6AloN7Q+p+iiWgHkxDs6mfdPQOyduDChXTH9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1B4iVQAtuTXLEpN0nNlu/x0nlTPmYsQNQZmh7g6RSOQIhAJA+QQ7QP07J2U7Da6j2KmpHs+mLx+EFD/+U5FQ/FbWx"}]},"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.2.0.tgz_1458412932388_0.9493610071949661"},"directories":{}},"2.3.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.3.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"f73b484d5997c4f9d164bfae808182aa12e7f879","_id":"preact-render-to-string@2.3.0","_shasum":"b55ca3ff8b426d6394d1e50439d768ef58a5fa09","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"b55ca3ff8b426d6394d1e50439d768ef58a5fa09","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.3.0.tgz","integrity":"sha512-hmmn3IF8USBaiH5NLHWdV79FQu35YKJxOtTDQd/MstZQz9fu9lD4mpYToAvkFlm2tf72Zl4lPD6FIpzx3swXoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOOKA3Y9geXJxImJukkuOLf7NOQb1C3QGqtxncHateFgIhAJJq/MxuVb82XQCz0I2R3JpXptn6o56KdNxCTYdc+08E"}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.3.0.tgz_1460593334191_0.8769135847687721"},"directories":{}},"2.4.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.4.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"e9a99174baee5f25b28ea9b200bb1b010441e28d","_id":"preact-render-to-string@2.4.0","_shasum":"9ce128f8a1a3c4e85c98e9d44d72daa1bd96e1a9","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.7.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"9ce128f8a1a3c4e85c98e9d44d72daa1bd96e1a9","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.4.0.tgz","integrity":"sha512-p3AZI9nSs4MRochy3VAgTS3zE02A8X70dfuoXg0vXyXH5JIrRwpNzr2O1X5kAdlrbPHHV0oZ+5YI74rMnLu2Jg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNtz9hDtUufSulYHZ/D8S+zu9PgnnOwUq9QVqSvO0QfQIhAPMtldC953XR+cQRShvquvc444S7GxWTtGEqY6SSVyDD"}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.4.0.tgz_1460598593680_0.63714793859981"},"directories":{}},"2.5.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.5.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"32db7c9866a717ec8b005f2130e2b99f821d5944","_id":"preact-render-to-string@2.5.0","_shasum":"4462e05be8039fd973d5bd85eceae7c218a1af85","_from":".","_npmVersion":"3.8.8","_nodeVersion":"5.7.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"4462e05be8039fd973d5bd85eceae7c218a1af85","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.5.0.tgz","integrity":"sha512-8n1fTrFO/9HjPEgg36RPKixwkKV6+qkqKQPqKoEwTEpqvYsMMvlObcSn97hOGsjIAUflpdsZXyJNqp21Z2/hDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCA3KjsF4TfHk4i1w/5uoY1uMWXwCVZDEebJJ5EjbGBgwIhALtsPh3+r4M8Q3JJgMu1HyyebkvcwBbl7MnA69MM7+dq"}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.5.0.tgz_1462386180183_0.1501770585309714"},"directories":{}},"2.6.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.6.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"083124da595f13b87cfc603378b4c67633f01776","_id":"preact-render-to-string@2.6.0","_shasum":"d8fc1274513567976484a26d2b248d0fbc298a44","_from":".","_npmVersion":"3.8.8","_nodeVersion":"5.7.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"d8fc1274513567976484a26d2b248d0fbc298a44","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.6.0.tgz","integrity":"sha512-j38Tgm9phsL2nxNN1SpMyexMcgq6UcV+LDU0yvC4Chid1sP9os1hnS/XaMsBinWsisYh60hGSRJIBqGlK2wHUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLcjlj6gNgzQJ1IbLsZwOuAHy9U6zHA3i1SS1bYBDrMAiEAupCGvEZf0XXE2WjJiFdsz9JlZqP96JF2kss+MTnrgGE="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.6.0.tgz_1463776428409_0.04915579198859632"},"directories":{}},"2.6.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.6.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","scripts":{"build":"babel src -s -d dist --module-id $npm_package_amdName","test":"eslint {src,test} && mocha --compilers js:babel/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel":"^5.8.23","babel-eslint":"^4.1.3","chai":"^3.3.0","eslint":"^1.7.1","mocha":"^2.3.3","preact":"^4.1.3","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"97b440e3f9593dadb92c46c1994f9a259477886f","_id":"preact-render-to-string@2.6.1","_shasum":"0091b9207e462dea5833d3c7bcb4cb5586105592","_from":".","_npmVersion":"3.8.8","_nodeVersion":"5.7.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"0091b9207e462dea5833d3c7bcb4cb5586105592","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.6.1.tgz","integrity":"sha512-wjN824WG/xwR7aoY23GZhoISICYg9kqsPIfLzaOBpa8EeUM1UFpYRINcBl+adU9n/Pi+3uLl6xqFNutX8vdjaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFlsD5l/4g3MMlzc1X7iU0sFE+gRVAu4ro+HC2ZV7iFhAiEAnSMqOmZK/YFcKpegLAxlvjTaOg//gndsLzIFhW45QZ4="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.6.1.tgz_1467260698250_0.20439230068586767"},"directories":{}},"2.7.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.7.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.3.0","eslint":"^3.1.1","mocha":"^2.3.3","preact":"^5.5.0","rollup":"^0.34.1","rollup-plugin-babel":"^2.6.1","rollup-plugin-memory":"^1.0.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"f427452b99a08a70204fab8024a1bf4f9a1697f0","_id":"preact-render-to-string@2.7.0","_shasum":"a2a0301c5248c2a189375691a338088295f2757c","_from":".","_npmVersion":"3.8.8","_nodeVersion":"5.7.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"a2a0301c5248c2a189375691a338088295f2757c","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.7.0.tgz","integrity":"sha512-9aImKZleAt3UMfReskm0rJItDetK2vP0v/Qq0hkH38QdgOH2xsF0l8k/QR1Mx7OS5jgohYDMc5MG8ATCaTc2PA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDanR6U1tauaOn41hPxoDLix1xwnLPN1DGi6SLJTswhDQIgNAL0UdXCYpXA/Ymz/vDkLv4hl4w0sGxJDiO/6WlFKYA="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.7.0.tgz_1469205118038_0.5595315762329847"},"directories":{}},"2.8.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"2.8.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.3.0","eslint":"^3.1.1","mocha":"^2.3.3","preact":"^5.5.0","rollup":"^0.34.1","rollup-plugin-babel":"^2.6.1","rollup-plugin-memory":"^1.0.0","sinon":"^1.17.1","sinon-chai":"^2.8.0"},"gitHead":"e56ff70f55a77e1988b7d94c2f9688e25e5c84bc","_id":"preact-render-to-string@2.8.0","_shasum":"71651925f9f5564c88a4402007879e43fcfda58f","_from":".","_npmVersion":"3.8.8","_nodeVersion":"5.7.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"71651925f9f5564c88a4402007879e43fcfda58f","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-2.8.0.tgz","integrity":"sha512-rm+W5lfTvJuyXkmiDdSGisttQmZyZqODaLUMsQfNJKxfG2FW/ZDVXPKkjJmUJ0fVf9AibByOaN7FlWtj0wyU8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAiKuTsfLoSl+YRvM4kgTqmfXt/RSdLIul2V2cpGOHCDAiEAkIV3/UGwwInaq0YPnRNeID9aPgjNPjYYY+nG6dokoGM="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-2.8.0.tgz_1469825166707_0.4573037042282522"},"directories":{}},"3.0.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.1.1","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.2","rollup-plugin-babel":"^2.6.1","rollup-plugin-memory":"^1.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"9c238b7d3c9fc452e321b1b362e7f14fc89a6b59","_id":"preact-render-to-string@3.0.0","_shasum":"55934fa46d9eebdacf5bc3239b302157e6b6977a","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"55934fa46d9eebdacf5bc3239b302157e6b6977a","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.0.tgz","integrity":"sha512-ohXeLlGQ8C3F0jBVfQEPoTuEt6nXVfVta2+nuJ+ScYfqK+dGaxzvY2Mobr8p0sWLrjZ0gK6xfunT3JFbz/fjuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDVA+gjlHfJLkg/asXjRa/ercdZUxEiIom0oAkhmgplIAiEApiWlnEUX9xOmyNVZR1wHEcxFtdnkcLZNjaLdp4jg4bI="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.0.tgz_1470179644966_0.06930288602598011"},"directories":{}},"3.0.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"06361339c59b7f89c5d8541c3e3a21d74235d056","_id":"preact-render-to-string@3.0.1","_shasum":"a53361a0055d57b7a9b59413c8ff181be4fc4eaa","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"a53361a0055d57b7a9b59413c8ff181be4fc4eaa","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.1.tgz","integrity":"sha512-8ZjyQXJsfecUNV10lDSzapjHnr0+ww+Zwdff8pP3oETMUYuJHQp5v1S2nj9VdPjnL1C8APVX3wzcJVyjradCVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSOaioPJpXyXA3xcZgxLndyLNdF/PSXRQ6xNfoI5VabAiEA6FXPNX4huwt0E2hQVUNkU+09EvYzIdxd70mhka66u54="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.1.tgz_1470184274802_0.8222252330742776"},"directories":{}},"3.0.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"047a7302df82ae9b7e5baf05c025c2dc6e8b6c3a","_id":"preact-render-to-string@3.0.2","_shasum":"dbadb25ba1941acf7e74f0a036312ed6522de191","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"dbadb25ba1941acf7e74f0a036312ed6522de191","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.2.tgz","integrity":"sha512-eiWyGwZdTkHWYPTfSV0dgSP694fjz4wMYjXiV9tdejLMdJnpK4P3nne+QGneKGi+uv8eGrg3Yqgih/VBPT/evw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlSOrSJx9pK2ZKe69up7mZCj2i42bI6iBgqOyRrrOYZAIhAMbD2c8f4HpQ7+l8qd5bL8/Xl3y1UYWD/DVtw/CIKQFE"}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.2.tgz_1470185019691_0.22728682914748788"},"directories":{}},"3.0.3":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"488bcbc3cf7bc9ce58b43412ee3bae9a8f0ba531","_id":"preact-render-to-string@3.0.3","_shasum":"de6bd3daa56b25a461d1ec5dcb448c1b4346b677","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"de6bd3daa56b25a461d1ec5dcb448c1b4346b677","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.3.tgz","integrity":"sha512-d3h2odP7caW9BOEGCaJQp/oK45qrmAE/T/DTarf61vbNaJlSh/gEVuZW5POxnbvI++W+7D5U3dFh3tM3PpTJsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJNy/v2jgq0EarzjmnV5m584+CyFQ+i/APsKLtTMsaHQIgcCUoveUswmzWwqK+aDXb0IJHTVoDI8AjgtQTOUkGuhU="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.3.tgz_1470186134586_0.15303457411937416"},"directories":{}},"3.0.4":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.4","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"b661daa52c9fc5ad3cb270fc0558746a09517ff5","_id":"preact-render-to-string@3.0.4","_shasum":"d1fb8ef0cc1ee341ab5f34c0190241fe91a85297","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"d1fb8ef0cc1ee341ab5f34c0190241fe91a85297","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.4.tgz","integrity":"sha512-z+i1GYp4cK+UUpXF4UT7KsqjnFoGKse/mzCr7rkSrNzsfp0HJoS6evHH0YgREUsR1qbgVHtAaF7jCR0IU3PaWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrP39kGjuAuPFUN/MueN3buL97IXjCEFKGtCgv1AMHLAiEAgRpYB06GUgTanUOwHMO9MBL5A8cKJGVpYgCrVTrcGEo="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.4.tgz_1470187728871_0.19358531315810978"},"directories":{}},"3.0.5":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.5","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"6996c913de89435bb2611a8b9d65ccfa9f3646b8","_id":"preact-render-to-string@3.0.5","_shasum":"120f472a58e5abef37868464c67615be440ed30b","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"120f472a58e5abef37868464c67615be440ed30b","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.5.tgz","integrity":"sha512-vCK55jehckwkkZhMqMaAdOasGpv6hNRwpkf8189BWx77PJaFwjKY+2AQjzgpDeUw+U/x18JmZ4z4+CAuPmsYzA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB203B1EQskZGTdLUa3pM4qn7OE9N19BN5Ugf/P3gFHiAiABBxiVkopH3+VDLIBWxIrgJqHE8gc+GFKvdq5DDKpa1g=="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.5.tgz_1470264923015_0.09949428541585803"},"directories":{}},"3.0.6":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.6","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"7c38a65b1a233aaeaf9d2c3172e7684552da5a88","_id":"preact-render-to-string@3.0.6","_shasum":"3652de0c35d625e27d0d081651f5e3989ce9a472","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"3652de0c35d625e27d0d081651f5e3989ce9a472","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.6.tgz","integrity":"sha512-y36/L2IaAeIhV32+hi4S+GGxnXzYigogmnFDrHqoN+yLMRNoBeBP1UyrIrh4LL1YrJCDWiSjB6CAW7otv3zZUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD81noTFr+Ndo8xv2UbSLESO4VPXcScpnv8fOh4tgeAygIhAJcy8VoBH9AUO2ZNWDY/lqZwdU3PDF5JzYivDzsT78SY"}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.6.tgz_1470769055278_0.6115790456533432"},"directories":{}},"3.0.7":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.0.7","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"49abb38cca713571d0a3b620f91813ee41e1fc3c","_id":"preact-render-to-string@3.0.7","_shasum":"3e8232fc8c36787250ef8f62d8f6b07ddb2e2317","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"3e8232fc8c36787250ef8f62d8f6b07ddb2e2317","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.0.7.tgz","integrity":"sha512-JdZmk4pnFY8cuGhVN829wiGZiH0Oz61/dM4Rw7pKhUKeQAMvlsKr0u23HKwksKO2CTiwGz5Nm+/JygykIRnOmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAY5HhIQJgOkV4kUsXaO7FHfsOomtiM1o2lif8778SAPAiANa5Uk59wx/9quciyhf1YHeAD5HSqBuDyEFtOSwvncLw=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.0.7.tgz_1470770698999_0.8741202023811638"},"directories":{}},"3.1.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.1.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"53bc99b2f0e4ea745f5f95abb68d81c9a52105ff","_id":"preact-render-to-string@3.1.0","_shasum":"e96e106c226e9672092a00c0c050a072d137d971","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"e96e106c226e9672092a00c0c050a072d137d971","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.1.0.tgz","integrity":"sha512-eH/rmAk8SkUroQ4vjfzyBBlrAuKzgOQr0bhr7m3uNwVuFuXnFzd83LwF2BqtEgDY5HpJvg0IlXXy4hrSsaiQkQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGvH/2aaYbx/KcBjgj+rX9Yh0qK4pUmW6hiJ1svv0hugIhAOYPppO3/ZphW8oyH6zXaJzERYScjg5ivIE3ZA4+Sj4e"}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.1.0.tgz_1474414799069_0.2606919417157769"},"directories":{}},"3.1.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.1.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^5.5.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"5cad8c9fc63796774598d40cc70b03d8c67f622d","_id":"preact-render-to-string@3.1.1","_shasum":"2d76bb1cd5d2069f4efd2d4fb58a6b481d374670","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"2d76bb1cd5d2069f4efd2d4fb58a6b481d374670","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.1.1.tgz","integrity":"sha512-CsNPVdt4aycl68E18ET8HINvso8cyvFTvKd3gqb62u3kW6ak/xaC/gerXUPKcK203Hz3WV+wbvuo+Bv6WATDlw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICQiy9zLgZbGIVjMMr8QjyinTKIf1bkRYeAa3cvLRhMVAiA6l2Z2s61S/n0hE7ImUPlRv3RwM5ssZiFr7bcg5oek9w=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.1.1.tgz_1474416008596_0.15428327256813645"},"directories":{}},"3.2.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.2.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^6.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"bae73d5bb3f294e240ed0e8f0f077cd27dc22a96","_id":"preact-render-to-string@3.2.0","_shasum":"dcf52e6cf310a0ff5556c4703c2ccc356e42eb50","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"dcf52e6cf310a0ff5556c4703c2ccc356e42eb50","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.2.0.tgz","integrity":"sha512-GIqyAJwqAAzpdRbTDADVN9f3BU5+AbUT9A06p2WYyu1rw2YTjBbqd30IKs07iZjg9bA8iMLQt38uINBKhXXD3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDIiMAJA8+74GClIKlRWec0EFTPTW0Q1X1+P7F1eKEcAiBC+hlVZ2hc2JPx8J2zcelERA2L7rQE81vG2bRLNChPdA=="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.2.0.tgz_1475165122745_0.9965530496556312"},"directories":{}},"3.2.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.2.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^6.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"446b2dfd4447fcae554469384fdcf1651ad1f93f","_id":"preact-render-to-string@3.2.1","_shasum":"a20c47db777ce3f1d3af382740b9a91656efc392","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"a20c47db777ce3f1d3af382740b9a91656efc392","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.2.1.tgz","integrity":"sha512-sbHcU4thf6/DlyzTvq9TIy6mnn2NFsoKzwiworg1Feajqlamo9eXEnYl30hxEZpIfIt4G+8Hhd1xMHg2quEyHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICOkV+Qp0ibOs/DMGFVxZvFcoc1E0XxdIRFRLTndz48jAiAd7Gsv4ZO4k5UjAP1rhsOujjz4SdNdCff5WbLeUSYYyw=="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.2.1.tgz_1475258504238_0.4975851192139089"},"directories":{}},"3.3.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.3.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.0.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^6.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"4bf274f0778b9bf131f23d733e6e35f0adc5c6f3","_id":"preact-render-to-string@3.3.0","_shasum":"e7cf3815fe590d8ddc21e57c996f5c5657ca57d5","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"e7cf3815fe590d8ddc21e57c996f5c5657ca57d5","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.3.0.tgz","integrity":"sha512-6s9VpU3gdQJOp2U+RPBmL+5R7O22zEp2nsrUYSu5S5VSjq+m/MN6uZrgXp/43lgkhL+vRmkyNskRwTxxDiZ64Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWT+1BPaN+3ZTrW8tio63ITwv3SOhUkQbL1QXLzSwsIAiBcuPncUS6h9OMTArJOs9+Dvloo859EolIRmW10jDC5Aw=="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.3.0.tgz_1480446448586_0.16777438879944384"},"directories":{}},"3.4.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.4.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^7.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"2b45656cd542bf721cebc80a38f417ce502c493a","_id":"preact-render-to-string@3.4.0","_shasum":"ceca76693aea6776c0c53a3902a5136659b8a87a","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"ceca76693aea6776c0c53a3902a5136659b8a87a","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.4.0.tgz","integrity":"sha512-0E7rsJa0QMJTztz8mwJpn5BwVfiXn1WChk3ym0Xb9vIRj6SukmpGZSq+FXRHJyX3txLQe8MiN68udmamwWiuJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbwz9ZCuPe8cKJrzL1YAHZ9WufbmHKw/cCb4YUzcwtEQIhAMYI5fiLPg/+uMLDP6o1M0n8Jw6dAZCcMmAwLZnkHHbC"}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.4.0.tgz_1484664952141_0.1593545381911099"},"directories":{}},"3.4.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.4.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^7.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"3a502380faa76df4744cde270673dbb47560b2da","_id":"preact-render-to-string@3.4.1","_shasum":"944476ea3c5be71436f57248e3bbc7a11720a0d1","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"944476ea3c5be71436f57248e3bbc7a11720a0d1","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.4.1.tgz","integrity":"sha512-lO/rtz0ER9617rpLuKUPj4+oWRlgBI9H1a6ef8EIBumdLQHN8r/DAQuUYY+J6tV/j+34Q49JppAgmladpfjKoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDILDXqmLIxycLiA+uF9dY0HnQNGehD9sCGp+NOWDHwqAIgIS5BCo+MIlaE6kslnvqQSQK+wOyqUQfrxywUm8h6wq4="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.4.1.tgz_1484674973226_0.8736249203793705"},"directories":{}},"3.5.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.5.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^7.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"fd00b37c6d4c8940f2b930c64656c8f144a53d32","_id":"preact-render-to-string@3.5.0","_shasum":"35c741d4683e95404a94170ec7251ea5f71037b6","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"35c741d4683e95404a94170ec7251ea5f71037b6","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.5.0.tgz","integrity":"sha512-L3AJLMb5vMlWd0MXutBqQaTHpxfQDY5VHGYcIJLtTxsLw7snNgY3+OmjCNe4D0+RPZCSdjUIUxiIbD3Oc6Qghw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtcanIpBHl4EtASPZF/lWQlXb5Sw5sHLh+iacDdqWICwIgagKYa0i/s7wH/H8GZy1Takq9IMWjdPWUsBKZA0f5qlE="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.5.0.tgz_1484940514251_0.5270415071863681"},"directories":{}},"3.6.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.6.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^7.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"9075a0801ce496b6ebb524c159f6bb2704892813","_id":"preact-render-to-string@3.6.0","_shasum":"03a49d2d755a766c3d421e8b06d6edbb33ed6bde","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"dist":{"shasum":"03a49d2d755a766c3d421e8b06d6edbb33ed6bde","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.6.0.tgz","integrity":"sha512-0MuCcrhVooprqnZCvB02RzBEJQZSmJocsiHIG0LcT65zAIRtlcB6MzBc1HYmq6GAVhMxA+CRge7t/taitix4PQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHOMEeKkzjhXS3zaeweXQixYp5X5sDoxePdfUbDGkczwIhAOQPQk317r2AvBu8bGPsrOTSR7f3Cmxv9rBFlBvS4pC6"}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.6.0.tgz_1487098173500_0.2693255504127592"},"directories":{}},"3.6.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.6.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^7.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"237eee434ba748e294c1d68a7372c10f8d47f1d7","_id":"preact-render-to-string@3.6.1","_shasum":"3be5dfc4e917fbe619398374deaa5b8f717ddf7c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"3be5dfc4e917fbe619398374deaa5b8f717ddf7c","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.6.1.tgz","integrity":"sha512-JE7EUOAaCzIdPHE9hUYG1u9vkonfFt3Y5OIqqQSP0ujKnm866OqNeZfMlIKH0JpM4qZ2NjzeAq1IxGUAS0w5/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCa++lJ3+U73fcVr+e7w8f5giE+rCB5Mq++U1LbvWM/BQIgYN+g+DE88WTjHOIwZ8vA5HEd0SfH1Lqdo4JcSmDm/fQ="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.6.1.tgz_1493168647169_0.7537236420903355"},"directories":{}},"3.6.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.6.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint {src,test} && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^8.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"796da378e280b083be407251505b4adf19c6d12f","_id":"preact-render-to-string@3.6.2","_shasum":"341ac493fb818ce7beac335417188b2ae8c585bb","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"341ac493fb818ce7beac335417188b2ae8c585bb","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.6.2.tgz","integrity":"sha512-DTsh4f0ctgjLH/8jmOC4ElfX7fHyaL8EQEaoMc8tsh/2oNeTgoFDU99kDQU9Lj90B9QrNnVnn3nIeg4nVMj6lg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2qEkLgkTN9oxDDivMCDagQ20tLxsS/qOhpeijptWUiQIgGNc5BZoIvp0HTxKuIhuan0w2J+9BKQhCDvtLYgrET5k="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/preact-render-to-string-3.6.2.tgz_1494540897401_0.5825813990086317"},"directories":{}},"3.6.3":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.6.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-es2015-minimal":"^2.0.0","babel-preset-es2015-minimal-rollup":"^2.1.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^8.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"555a65db89af8289e3ece646ddcbe9c44763be9d","_id":"preact-render-to-string@3.6.3","_shasum":"481d0d5bdac9192d3347557437d5cd00aa312043","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"481d0d5bdac9192d3347557437d5cd00aa312043","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.6.3.tgz","integrity":"sha512-DZluKKNK7/B57IhKoNMUcKB93B10//UypuJlMOlx+arsCOHc45tbAkJrsdSGeNH2aKt4UzmflTkP+JozIUUInA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEt5NfiDwFwgQ6Nq3ziRO73zvYgM8/TqKB/VZTnqSYQEAiEAt0hfYhGz+mp4JDOTUAlFZmqxScCZXAKmbO3LC5XX/o4="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string-3.6.3.tgz_1495493162825_0.06074099778197706"},"directories":{}},"3.7.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.7.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^8.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"106325d9ef59f7215a91598a858f7f0b13889bf9","_id":"preact-render-to-string@3.7.0","_shasum":"7db4177454bc01395e0d01d6ac07bc5e838e31ee","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"7db4177454bc01395e0d01d6ac07bc5e838e31ee","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.7.0.tgz","integrity":"sha512-w2oft/4dL9BEcL7XOwS0eZFPjlpkxiM2IszZIEHZrptQRYWPHNtFdk9WpW86BUpqFLVPAuS4ZZ3+2U2f5z1wNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCS096ZzwqN1nWaO8jyrsehr54R/Grx/cDXZxhRJgWtVAIgLodmW4jh1P4mj0IexyRpPh1TsmykQHEKWWMZ/zWSnFQ="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string-3.7.0.tgz_1507833066168_0.9589179907925427"},"directories":{}},"3.7.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.7.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^8.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"725f9e4bf7338efac0516b33a273b308d57778be","_id":"preact-render-to-string@3.7.1","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-e/vp6sk6iwDBDpRL+eQur9YQN+1sgF/Xkz9uQltJUswYq6gGVkZP/OJIFPrMjfU4efxL72TzCnS8ultOOD+r0g==","shasum":"32b40a3e95869cd8fd41022c7fb133fcede1ccac","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.7.1.tgz","fileCount":26,"unpackedSize":152736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYgggCRA9TVsSAnZWagAAw68P/A/+y2fA6N6Gq+6xt6xc\nOAZZxEqvbZPYxbjFVhoCJF76eNcUeHihj+XNeQuMjxBj4P/eK+OD9Xjcm/do\nLkEeTL/bdujqTMx/MTfpHr3wGa/V4ggGpjZLCDtNqBaJinU1QRkRUQSCO1Z4\nArpOczqIloi99gZ1oCKXIZngsx7LhPAMVzSw96C1ZoRzQCwI4qpkTSmrqwpd\nXHmIxP1VVMsfE187eSCx3KckwGPFdXHYMQVA6WbKRDc/ZiikvFmfw7PgLtjO\niKsYj7UYO1N5IgBvcYcL1ZSLVcasuoOHfZbUGzMZxrfO4KfeqPbPp06WrugW\ntQPxwUJW9oc/3CsP7A93VU/dTPU2UqBBe3HBouL/4fAbgjgUrmiGNywyUhHd\nC/eplp0CwxJdslycOaev09Mz6PT6sRTh94Y/iEh0HWJOGsGu+oTudYqD39PX\nhnOr2Pod8DaT8vZH3UQC9YdnDq7qSyCLe4yL8Jnu/HfejVgmxOy5CKEoXM/8\nk1gkamaFNoDwadAQSvUCq0iJonPl1boEvS0gmQRWZ+EOMQuINYbQULyE8bEh\nK5f+FOvFun1vhQ8WLZXDRfLlHQTO2e2YPQy1HVNG27SnkYSo1C0amm1Uv7yA\nRlSZjUoD4wI0oRHXqxUTag3orc4I5nsO9Q/DMjLfz3fLqlSJxqoMAkfnCkuy\n3jOW\r\n=6WPT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAHdLbJC/otaRDdTSNpSEJWjde3R41IHwYNb2bI9CnSkAiEAjT6ZfWrmw58oMgnVdgpte3+l2P8oKPjSHA/iW79JlV8="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_3.7.1_1533151264249_0.8612196543811781"},"_hasShrinkwrap":false},"3.7.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.7.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","jsnext:main":"src/index.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","transpile":"rollup -c rollup.config.js -m ${npm_package_main}.map -f umd -n $npm_package_amdName $npm_package_jsnext_main -o $npm_package_main","transpile:jsx":"ENTRY=jsx rollup -c rollup.config.js -m dist/jsx.js.map -f umd -n $npm_package_amdName src/jsx.js -o dist/jsx.js","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-cli":"^6.11.4","babel-core":"^6.11.4","babel-eslint":"^6.1.2","babel-plugin-transform-class-properties":"^6.10.2","babel-plugin-transform-react-jsx":"^6.8.0","babel-preset-es2015":"^6.9.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.9.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^3.2.2","mocha":"^3.0.0","preact":"^8.1.0","rollup":"^0.34.3","rollup-plugin-babel":"^2.6.1","rollup-plugin-commonjs":"^3.3.1","rollup-plugin-memory":"^1.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"1a309000328465135fc5c10c7ad14320f1af9b21","_id":"preact-render-to-string@3.7.2","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-1TDQjZhWJoXSYyFDlEHs+siDooZuQQMNWWDBNEJq2W2RTK6O/TyVglApJHzblVK2NKDk7pQG+iPjs3T4R6tG/w==","shasum":"b2440694916dfc431729aa97cabb2de1bb6cd9b3","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.7.2.tgz","fileCount":26,"unpackedSize":153598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYh4eCRA9TVsSAnZWagAAYIUP/3OLRL901HAXzAXOUMtT\nn44wFKomcyMltLiEdF5U193qzVAPXL0ltSTAmc1rxYLFlT5Asru9zNws1YYU\nRqIaTWfeH46xWP/+sHRJ1s2ixIFBPJGZNY+SMwawlTwNppynM8zTZ4Gd6yIN\nZZSqu5KmmlcdaIHxXt0nSUfLkJWeE+qS3sUfGA0Tuyuuz18vPbg+fRmtO7AX\nd9880f9lUNolmNgmdQt/PRwFAuz91yrH0mIlUpdeyUZlACcJdVe0+mHG03RF\nO7hphUXDWsiFxCIsIMRmKbiXqZ0PAOOON0OI4BSBPrJhh4B8p7aHYU/rihUj\n97Yp1JyLmGEVNeSLECgiusH56nrcQwrfFya5pwTbN6pi5DW7yggnKC77cQxy\nnpo+LTAn8q3ZUu0dX1KU2alVVisuNp+iz6mCXf8k+dgY75emG5JhbF2NV6RO\nlR0+2BFeh43M2z1VuCX4h3G9jYkLblfr0928Fbi/IHAXSkEdDUbjCzgar9d0\nCk863xRcaB4v1GkcEipTZ8xLDCmoLvUh1MSwwYrnQmujW2ea86BwsQ6VdTPZ\n/qHhc6RtqYHb/i6XWs40T9+s9JATVtzkF0RiCfMuvEfHml5czkQe+r5kMFPO\nqUQMBYEe9zI3RHhvMtjy5WLAlq30aIq9y1gsJ85Zky26kdfekJaBq3UkbdeP\npmAe\r\n=TtT5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHeq5VMXJSYEm+3Ddz9DG3L1p0EF8hZutqMDLMS5ZKCwIgc592kvnvmU9ofgVh2BFLlnYK2gphf+8CAyDB8vT0Q4A="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_3.7.2_1533156893734_0.1759399533342394"},"_hasShrinkwrap":false},"3.8.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.8.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^8.1.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"6342e1ad97c73504a3ea3546d5b4630efb978451","_id":"preact-render-to-string@3.8.0","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-3MWFFWP686dk3ksGmg5ZzuFJIM8xqWhPWa4P/sRvG8q6PedQ5U5h4/rhkCzVceK5Vy/8ZXPJeATjtGJuT2aGyQ==","shasum":"1c62e188dc136b50e5a273dcfaf3e4801c743069","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.8.0.tgz","fileCount":24,"unpackedSize":118312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYmgjCRA9TVsSAnZWagAAVqMP/3SeG7GNxWcxuOFRehxg\nDqJYP3C/bawf+hSQ/7PsExqxoQ8hyrXt5kZgC9scFJZduT0EWLZbWQhEC3qM\ndKKhmIOABsGkmOJfugpUz52sMpC5gqKcJkHwgobHYkxEBYTe1hIn/cDWQQni\n8k+RCy4ECU6w70It7BUTWkgV9R3y3MiKm3RPfxMVpAecXqM9bzeKZngHLw5R\npsqAjZ8x/NRhhtJUkgUqcBcjoKHOlpYy0Ez9AY7mPwJbq12oLVDAyj54hi84\nDJpw6x804BOr7txfo2i3xak99vnxYCGqk+h3zIsNUKWfwosoFGRSCcK7Hy13\nNn/sVNGXbV2praG5Iy+b4n7xnyF5X8W0V70DI+HtXHprJgJodiryvgB7Q1aD\nxq4zsxSzuXIbGKjTsbqeqWUCI4CWS2Vedq2+kojnZh226L7WNMWHVdkKNE6s\nnlOmcFI7qAIg7dQh65nCPR7kaVIvoMYF8sNEAkb6iDThAtd36SlVnj5oE1Jy\nGysBrK+v9KzKAoN7YX9FxDakds3RPW6r7fGKaSrvn4+S6/yLuuNbSl3xpWCJ\n45MTBtSqSbbswckFqrKvtFAf+L2d5wZ0mvWiPeDxkW7Hn9lU03+GKVo214zw\nEpjJVmszXZEsXbu5+D4VL1wdrI1WeXTNt+JV/5Pl8gFyDNY6HwzE2OABFqlH\nPmru\r\n=r571\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeTBwYhTaPXS9WhjAEvZFQO5tfsqcoY42JvIrCCHlS4AIhALgCAxa60RlNRjFuv2wN//gJ6dYPLSNTzWnDKMcLSx0V"}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_3.8.0_1533175841830_0.18333181323373227"},"_hasShrinkwrap":false},"3.8.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.8.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"files":["src","dist","jsx.js","typings.json"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^8.1.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"9fba820e64352c9f400df7db5ab491e49e0fe67f","_id":"preact-render-to-string@3.8.1","_npmVersion":"6.4.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-ZwVucBeWkwfNolQ/edMupNTCrZhg9uCrvTGCh2ztZBQYQP3GjWsxGn8BU5S1YB03cTrcCLZxrCdSlaGtU/hdew==","shasum":"4301d44ef1d404660d2e96671e632a8f4d6b7f9a","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.8.1.tgz","fileCount":17,"unpackedSize":97510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdMipCRA9TVsSAnZWagAABLYP/jqHehjOjksfsTiSl9cK\n8/Fi37CLxAE/IAYdUTfnC8Flby+SSlYfXzzOMeVNKRYHRl/Y4FKfvWdFxU6k\nMbs9+VC/3LG1iiQKuB/1vC4FS/ABhpz3XhQpzVV+0UXe7h9iExbHXDCKtNFI\n10FyruRszO8vv++oP2p8b7fXpSvXvJutYWkA1jIlSNKZyO3ZjYyd5OgMKeG3\nd0sMnhTsBFRPwDrcjALcR9Z3p/18u5KIxGyUweifQt2/l/w5j0MeT99Q3inB\n26SrOZGqvc6ildaJGV4PS7FAq+LIZFD75P0LPNkjbJoJpXR+Lo3+J5dD3AI7\nYD2rC4N5xrrerVN+i2YrxsO0kF0Dj9+rJCTbE+Qy31hp0Lfo4gWLYaWnFFNY\n2XhatcvSc2T8UhBZHNOPg8obNkGQ5C8W1S47zfzTQjwNXIMfsJHoZpH1ezJn\nM0WSZVhIoVu1Htj0y7crQVzL7fpI8RTplOxxrEk5LLYpg8zBo32VDPyn39fs\niqPO4f/jzeETo5UpCtwgJRODIfCWs5uaQFCbYpUereMpj9RGXOhH9Y0LVBRe\nTopxZVChs4FDyGJquI973tDrl8l9tLaRyz6H6lEeKucC2+IPSxIUpRxKxL5F\nI9SxdhauYEsfjk1VvWFweduFM8QSlDLy6eduhc8joavfwO3udyJjk7ZtYVmV\n7l41\r\n=vlce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIByIBxhrgSsmSjRRsl4snCL+MjnjKuzgXpZjybmfEIZyAiEAwZkyD5t7Y2Goen21pXbHhZ2Joh7yQRXrPwN55Jvctt0="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_3.8.1_1534380200616_0.15859079853263758"},"_hasShrinkwrap":false},"4.0.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"4.0.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"files":["src","dist","jsx.js","typings.json"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^8.1.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"c06f33491968c95764c655d162da19ca4c5921d3","_id":"preact-render-to-string@4.0.0","_npmVersion":"6.4.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-DVNjSHI9DfDv8G+hSrtk3TyXS3FQpL6c/5N2oxdCWq3SCMKlTUbdMnc3rYA3+xWnHeGIXllNlLQrFl0m7poK1g==","shasum":"a449aba967daca35af6a9d4e03ea0d6bc743b95c","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-4.0.0.tgz","fileCount":17,"unpackedSize":94456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdNEhCRA9TVsSAnZWagAAM88P/0II1rqD/6APn0M8CqY9\nQ6syOyWyqy2icBqikq7VNncOL9/3p0985DwjTtrnriEIWHxOMrt1ngk+/14r\nUwW2mZDKORQxeAl6JCXqq01mOTow7lWXlzR9TuU7waEtkvzhNOUtY9Hxvn5D\n7w/yee1Wq8l6JnB7Rgz0rqOLjeBnHbTyxmXFzVCIkVKihV9Pu7isnkPs81kj\ncYYdpZhf/Y60PGA0snI70jwQdHaKcyb++Fe64a94IqH2Qgbh3+aX/c0zKzyJ\nnyBD/qHapKxQfYTYeL58NSQxO3icBaRO8H8Lg7J82731FOTx1xWW2CEnm8oi\n3iCQBHG3FnrsrtVFCqYzMGjSLb4n5EdZbODgSmHIV5VKMec26DAoYzMz35JQ\nGFTninpXZZ7xeGPbgUqMYKdu94X4BFNEjJnQuCzfxUmiFBcEFhgZGsfOy6kE\nEIcPPsKA7O6QivPIKXjJdSe5CxXo4LHY5uqjqexrpIXQ/uhxZjOwK9P+bGy9\nOtG3R4FdY0x8yAsvVTyHlYUsDAnGSNWUjE0z0g9sE22V/1c2BfX+qz6T0zVd\nNtS6y2v4UlOFZnMW3Ba/mNLw8dsPLbGWnlQvLH3xuKfZoDkjvORSZ98Tt4IE\nYb5+IZsSRaFJxhOf44QBWw+9Uzor1FzOI434VRbxXspQNq5RcUiTm3PDrby6\nV8Wa\r\n=nWVz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8hJI1tQXm5RHKFSf6RzErXjO+oFQzth8pJ0lagfF6QgIgUJ1oHxI2W7AN+qm/x41rOiWBEiJ16fZ/0L0KulwbxkI="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_4.0.0_1534382369378_0.23935044228737645"},"_hasShrinkwrap":false},"4.0.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"4.0.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"files":["src","dist","jsx.js","typings.json"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^8.1.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =

content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"cdd14bb85afd5151d1fbf8c2b5a23ecdd8f97cfa","_id":"preact-render-to-string@4.0.1","_npmVersion":"6.4.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-gOE0cCUIWDIbhJ0a0Gss3BTiVQy/0uJP1HO/A8GzadYPt35BmsZbF6X1JAHBUZ/JosikTCBujqaygqu1IdAwvw==","shasum":"33957e37f2d37b456661ac75cf0253a25da4f91f","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-4.0.1.tgz","fileCount":19,"unpackedSize":100693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdjE0CRA9TVsSAnZWagAACfEQAI2ilR7TSWuyBeEMwCQ7\nquH8p854d9egDBiL1yVoE7jToRGf6MhtqKwkGLhvZEez3wK5cnCYEczK5JMO\nQTw1JmUTv260cVquCiEZL8TC0gWJNvZfhr/X/x6TcfMWh36FHqTzo6L7Bs0J\nSkNh3Uv/c+UmMnZf+HI2GWF/kgBIh6DRhJ+iWVySxyoicthjt0ENVqbVaMgB\nhgqhUbHtQe74IMOiSgddObs3qRr9yYz2L3qDwmloLP4Khp0T+wSE/fWH3UoK\nAhbSuOuzfw28OD64KvK5w9TqxONHOGfQR1kad0ipqWLT1NL31Y8Z1g3719z2\n7xTITklLvX8FbI8QzSCQFLespghqfCQ6u/F2eNn1nA7OhrabTGHAm3rHBFfN\nkIv+YrCBvnsqfdy7NXjmEPUMqVEnzIVXqwg5jUCe0FURNY9JRN1QH7KeGO3r\ny8VqLJmIOPo1w2V+fA4YUD2MI0S/c+BDHNm7rX7PlQrRqK2dHM+K9TTGCCZT\nSLhA55ZWFzeTUVkuRhweOYVosGu9GxfuiByWYFJCBEqGrJJ2wyhG9aHWxRLw\nBSoMEvGyXoOolu/6kojtPgGDIwXnocb6Q4hixSWDM5X3HsV/0iZAirQEgXuD\nHcZWzqkcjwkM52w7e7Kis2LkSXZ/F+wJCUPuQhjtKmKnUYIwGCF/KJLmZjBf\nB8wJ\r\n=H3PE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH6QEL96wrDm9is86dpkVRyOopg/lpixfcPR5wOstp+zAiAwRtuODXyKtdohuuoVsbbX5eqU6Q2XeyCF87zY+kxlRQ=="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_4.0.1_1534472499194_0.12754328058881792"},"_hasShrinkwrap":false},"3.8.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"3.8.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"files":["src","dist","jsx.js","typings.json"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^8.1.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.5.1"},"gitHead":"b090ee56def6f8cd460e98325127c55e3229eef7","_id":"preact-render-to-string@3.8.2","_npmVersion":"6.4.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-przuZPajiurStGgxMoJP0EJeC4xj5CgHv+M7GfF3YxAdhGgEWAkhOSE0xympAFN20uMayntBZpttIZqqLl77fw==","shasum":"bd72964d705a57da3a9e72098acaa073dd3ceff9","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-3.8.2.tgz","fileCount":19,"unpackedSize":103820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdjIhCRA9TVsSAnZWagAAvTUQAI2paah+JxlAXQlBH9eY\nDps5Qpff/dnPjp/UQtkT3ldOy/l99fl36iDZIci6JT6TOrgXxsbocLmzmjyr\nF7XsDxp8zU1SeKkT0KF+GXfTv+yGkXxRbTRdG9Rnn5186cfckB2G2Zpz/b/a\n0/xj+CNCF6+tXXYB5dkvdg/DttGCjLXBSJ/o5hQoQ+ZHwb4S+lHVtqmTvDFY\n4vD+jRSvacU0x99eBw3k2dshDMD08eTtT85eKCBdzjH1vgWuyuhi5b/8Q5Th\ne65XDqTmBYKHEOxR7mc8myJAM2taf7PQgDzFN8AIbaxyKyICH9irJ3M6gvCH\nh5lGqyWHXdkHy4c5/FywzzuQZGn7T3C95rbCHTiUAxZxDQDMg0h58/qIrKeo\nfrw0CEUr7yzPdzqzygBZe8JC84sQOJr5sHuS1tXOW6frP3iUe+qruardmpsw\nIwjGDUrHJjjwq7InUD7cSl3YJWChJEgp25KZy0m5hXetpwQVghUPCR1SIez6\niZkRdRMbnIvygZ99IsHdh7joF3P47xoSpZdHKD6II7MJrfZ6A4mi3CJFKXQk\nAMUFGYikU6DDN+lRswiiu4cvfQV5leqDd6VvRBXj92mFYx6qPQROst36zgM+\nTiXR4Zttsc2/7odFbCJssHbVyw4X5KbrP7yQ07KEJ2FLdb4eQnyYySF9Xxik\nZC2Z\r\n=39wq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdnOIiX6ITSj4FgSnPaFb3fEma0C7/5QHS4aV9jeRYMAiEA0jVzWzQW/xIoTBHaRlVmCRMHMP7JDF1VqV4bsPBr4Nk="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_3.8.2_1534472737263_0.25264184967228154"},"_hasShrinkwrap":false},"4.1.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"4.1.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"files":["src","dist","jsx.js","typings.json"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":"*"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^8.1.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"ef7b0a260f3bf834a7deaf4cb5e8016610c57ed4","_id":"preact-render-to-string@4.1.0","_npmVersion":"6.4.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-FlFBJRxo8z4cp6VsDmeYjIEx4ZK2clFJnKIvIj8K1IQCRm7ZgJ/SZ1+BotT86/Nc+V1pNtFabHoUi6gpjx5Pug==","shasum":"70d98a8385cb86558366c558aad7311ebecb881d","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-4.1.0.tgz","fileCount":19,"unpackedSize":101869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdjSvCRA9TVsSAnZWagAA7AgP/3EZicWY93Ihe3737dUr\n4NrYwwQ6GO2/KyzQsqdDu64u22uAFXNUQxAJYpetUgaHBZbOuNZXlCOii/Jg\nmOVZaewup29Zyt78wCWxyeNijM7P69hVSyAeH0cUYjRwS4p3ez4Pm5v0qeJy\n94aptYcVKEriWQpmnXz0d9yKx0b3ZAlIYYao/g0blvAonuGI2LVOV13sVuwy\nAsSwi2LqaUdGw2WDrhQIF5phZ0C1NsQyYiocl84ODQ2ZIygXcmnj5JSQUkF3\n2Uwo4UD9mxZ2KVJYOf8K4GjJ0RLflzIGttSdggptR2Q6jqLXenIeO1SAj88F\nWtCVEgeHT9ISC0GmNjUamY1nINRT/mES+FVuPzb0YczTbeAkQ3pW4k85II7j\nQ5XALSTm65ixGwF0DyuF+C2ZqP1KW7UQ2aZeDIJoOnRL8XV2FG6iGckgdCpX\nvSw8R+BOVEeQshrF59aXQ3UZnTCYXMTF/g1mGei70OrMOp5eofGh1Vb9kg46\nutClsRX4ZkKr6945Dgxc8+1UNHfwMJBaY1VWA+hXoAK8mKauXUbjiyFjJSWz\nNmh/83bAgwZDMu6r2G1EvOciUZN/Rpj6Usm5UQ1xyBkUamKoT/J3Icvnd/Da\nra4K6oJsXfadokVo5Bkg/3JJryjxpBaBZoZibarMeiE2AFSO6762yRYG8fD3\nIwov\r\n=gU84\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE13I/jTrkDTI7GhgwFWDRG+3nukS/+a78ti1McqExL6AiAhYkhQENgcu3oN/ZlC+aUrwGIcqEs/oa2FAGquylsFKw=="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_4.1.0_1534473391274_0.7535264488878044"},"_hasShrinkwrap":false},"5.0.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"6e2a9e4b47d56060459c409cad18f14c8da47611","_id":"preact-render-to-string@5.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-PVUcXpXskGL0vbKk6eiQZGG/6qMHunemARRmIU9t56/PehXbxzoVbTBdDgcTFcTyzewU0ZOhBTdonOUPGy4+PA==","shasum":"6eec079b4777d863e6e82f7b2d4accfc68733c1b","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.0.tgz","fileCount":17,"unpackedSize":78432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgTy/CRA9TVsSAnZWagAAbF4P/3GZ7YJBTsTujHnr6rty\ndb0sRuygv1enrhmJ5UB215vFI0G7rotvl1HKoUUDMPt5Vx7YWzk1ooftOgbl\nZ3yQuE8swZ+UwhWxrxNma5c0QkJDCSqN36wz3uO1aLnaTNQd+qKV2d33KTi6\nPcKlUJP4urwXvW+N+gR4c7+M95i9JscWBszcKxpcaJsAIptx8Aa0Y9qM0bF0\nPYbjh81vhM7jPL3zm6m2iAvp8EcgIk2j6lrpo78SoaJcQXXo1Y92/EWXYfkz\nHo+2B85G5CHeNn4VoSjC0fGLl8TN8NyABB6U1vPNNZCWWeEwu5P1j0SR4P6O\nEdBf692QcmPgLyP4ZzWq/6sLCTZa+53zCmfhdvh7vVXvnjJpCP1rZ5/+IJ+L\nvsHO4UDvXbE8ow93KtVOPDexdXSGm5auFw+z3MzYSp5hsp0pltv9u6wtmZyN\nqIu/dLJmA4OH65idDYk0HqFSSAY0OYB6df8D+eNHpV6OSUbJbcu9e1pTn7PT\nES47c/2TvIj4tcAOfKexUAP3/NwP74DlhQEhzu89gyOBoFV0cCViAxt6fFsK\ntEc3beWWdrgR8whfKXuH90gDusq4Oi+zRTl36Lm3sbtPqw1+7Sie88uXihGy\nVImSnxWr7EcecE+TC3cCYiiBD3/7QDUbh240o+FuuLbpc9H+Zckkg+xw43y4\nDHwd\r\n=aiBy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEiU/FnjhI+iaWEn4lB/Q9VR3UsPyPqDUCYJlktwZTGOAiEAkqSSc7+G6KyHfHJ3+Up9pzFtys63ewY5Vjuihdibmow="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.0_1551973566926_0.769548087120407"},"_hasShrinkwrap":false},"5.0.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external none","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"8536c758e3d1808bcc18d64cd944da609531d11e","_id":"preact-render-to-string@5.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-MQbmKM9hHkaY4lTbjkjGQJGOiuDbcxGXkjxUCrXTzD06VzFVYvtQ5fQuFCl+vab+jlDo9iGikKBY8fdb0IovTQ==","shasum":"5d3472d79c2145791f627c4e5cfb25d3b6508ace","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.1.tgz","fileCount":17,"unpackedSize":96968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciqwiCRA9TVsSAnZWagAAslQP/iFbFWal65Cl4qPVhNHg\nGAymf6x58nn7gnyrDyODevfRs4BGDYAzkQ8yAxHg0qygTZ75st7WaNaUe9AD\nJS74Hi/Ia39exhL6esBBx/H4UmdjkW2wlajL09Vg1vBE7xXds8MsP/Yod2s0\nQ+tKev3HKCWu+o3AZ3fCzs/MWOc6yqu2VU25gFXFuyFnKqYaAemhHsyVc/HS\nd+KduAfgH2FImIaPetKd+ErxJJjgDNYF36+q+3CbUP18iUDS9EdwP7OxY/yQ\nZLsITApZK6YMVtZPXHqybHW6T4CRKum0nkDoA9XCDLE5bHr0PmI84K7/4vlk\n8IOP4VJamhI29LgBMuUpKcE9jEB2P1tC9O6XrnSGsQGSjZyJg2HKkQlHukTk\n5+vIhvh0xZkruZqZNsL6MjYvHNRDiNzWio5dSVjLhGJwVhy96FRdi1OhDX+p\nxr5wTgrfU3gQbfLBCD7mHs27HE1ti+FXMlSY5MxtZ7bzsIs2ArQPJghoJ0GE\n81F/m8A0HROmHN2wPlg1sMT3sRUYvBbuiKgZbTahxVIgfv5WUn3BNUboe/Wz\nlf5WleUawTTXBNPpfvjoIXXT54wAJy5BHrQTueJ01y1p0aYAUAUonECa9Li0\ny8hfGyUTmlC228MFrsR5uteBOoP1Y2SzAc1uIT7vcgkfCZLQvPaI+2fXGSBn\nwj83\r\n=tOgk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKt/J7orFheYulIp5CjYOFqpcLT/xXFGaIIOqpvIf+VAiEA+vEWjnPxlvxyNpnAYdazuv0Wc3XDXFzIKJhnSekqJLw="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.1_1552591906168_0.2520127411764801"},"_hasShrinkwrap":false},"5.0.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.mjs","jsnext:main":"dist/index.mjs","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"6c7203668000201c88edc3e35635a9ba4c3d4c7c","_id":"preact-render-to-string@5.0.2","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-2RFtynyc8O+JA1Rlt7cPAnBKpQCr2M3R9BUXcHFsG0o6+BUTf3HRtbiV/XdEBaFapOEk+OlCnfvDw1L00G/Lmw==","shasum":"f5220ac276f6b14737d735dddbe45947dc801241","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.2.tgz","fileCount":19,"unpackedSize":137401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmRI9CRA9TVsSAnZWagAA/bEP/ijs8i9tgkh5b+9mC4k1\nTsEn2Tjg3LqnMTavdPTxjL0gaFHEN247h3VmvC0vRyTGJJMsz7egiNH7GLoy\nPjRoSYcVXFzrIRZRRPr+K8fGcLVkbxcCZ5yjhadQ+SOrprRRZC4DjDLJIUqw\ncrhgNitW66a1SnAn5NzfakswZoM7BSg6fHuAVlAdoYSXWwgcXclE+QNvspDD\nr3DK0gtMkb2d5Kk6RJv4gZLuNg97dH5jpXbrnueMLGnsjjezFFnyy3b31p0W\nIVO7XO6PWdrQHDyiQr8l9UkAqhoqOpSeQH1UZboFYcrMdgK0MsmUj4rG2mqI\nf/w1Z6qMRFlO4IUTBP4cYaDGkVS0bbXG5rdnsoG37WfQ2Le8mc/UvoCcODul\n+sWBPaIT0ltGP1cs469UNDqCJ0jyr/ELY2qYtkmsAUJ2qQuuJEpfw8I/W0kf\nayXIF73L6m6go9BgpvWWCusyxv1hLzumDrHWuG8xZ/ds09VXzyn8Vm4uUd6a\nVh91C6IEkXwTRc0DrcH7qfQSNhO0D7nMIFKsJ+CM8fUyB0uUj+4/V86J3pvK\nbsyEImc/V9ROeWYvbSlMOtK/yGg5xmRYlaw6zVFXTSMdMwqEorwJGJvpCbZs\nh8um0zILidzkkm00yVC7ggOo7asVjOLosZGuQgExQRJu8dfDYIs6V/ZtMpT7\nO4vD\r\n=5ZfW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDx0cJ355XdvFTEj63ycViUDmVVtOWeMju/48gN7arHhwIgCVlI6ZD06rKI/SxRpwbkmk8QnxyvRctwx2HWQ+a2DNU="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.2_1553535549150_0.8072331648733109"},"_hasShrinkwrap":false},"5.0.3":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"a102ba821f1075c67bbd12f43dc0fb19e9524040","_id":"preact-render-to-string@5.0.3","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-FuaMTQXsn/RSQN0JphOpoqeSKEmHm83yLeZUioosgZkzdAyrAFDiAFy4cWUhjmaT371eEwpFZWcwiUHL4oLEUA==","shasum":"393f73826ad21097982e7ca1a4a03e256bd20422","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.3.tgz","fileCount":19,"unpackedSize":142219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0bl6CRA9TVsSAnZWagAAQkgP/1ze2rBWsownmQK17Q0P\nSQAssbZ4oPHnbwVMON7LEFDvCMYq8PeP/Fz5p9L9urdPWqxe/ZHKJOiUt8Ld\nEihpfUGtU1qQaGMgh1DMG7oDou1NyZ3bvwSITJ2BTuYygOSNNGawFK4hdbBh\nLxgHnaBrAxLJm4VXfONybpe96eZlcBNkg+1aWtbo1ydxpZZyprgaUA0zsOB6\ngko/7Hyg8qimcH6b1k/58/Sc0S51gxYw9+ey8yKwzJ6NSB6Qi7Q0l7pUagU5\nRbophRc+tAbgLXRT3b8rRFXeDUp7BXp4i/7CejKarHs4rghvlVYKIFr2+WFt\njyGQag8h2SHHmonLBzzYQZTAvCJGckDowZmU3IiSlBTh1K9cdPH4+yAYTYlU\noXhPoKxpmIvizSF0ejWEyRyBQ/tDCF3AM9bil3c8Ezmjs3QTUDz6icQkp4aM\nAOguyr7Z25RwuNHtZDrNp2KFEbeLc8jdmccZaSR8VzjL/fO+VPlNK8AwIIup\nfFMcIAbl/gL7qW+EB6xIkK26CnunHfvbgDtvlakjRAXR0J/3ZCkklsz4RGDk\nDPDPgS/cwfCpjH+pqF3vGhRgTljBI0lHrdbu7DFT9ox9QOkEu/bgGaWq0dgn\n6YV7XuIc8bFrFFktQp2wG+KPol13yFVnMud9IWku7QLBKtl3nFD5IPVtraiI\nMpPV\r\n=JQ8z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSR4oOzwL652jYPPdfV3rWosYTkBT4j92nqt8/vfZsxAiEAkbi7dtjyLXmH+vVUvmEmtGA9KWskXZtZ2hIZlngRcls="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.3_1557248377383_0.49374485369195087"},"_hasShrinkwrap":false},"5.0.4":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.4","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"echo 'export const ENABLE_PRETTY = false;'>env.js && microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"echo 'export const ENABLE_PRETTY = true;'>env.js && microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"0b239cf6be73dfe9e074389a7b5050037c007a5e","_id":"preact-render-to-string@5.0.4","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-5gnEDbDn0u/rK8w5/zaRc2lGRlOfPSlV6YVnhKGTTQGpHRQoRTf8tov0cs+AUX11TE37TF/izovIGnQSbkhQNA==","shasum":"200f8ba3e4e4b934cc3cd3d15cd8bda2dc74fef8","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.4.tgz","fileCount":19,"unpackedSize":147196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDb/vCRA9TVsSAnZWagAATQIQAJr4maR6ROZYHMWlsxKY\nlu/juvOL3IGjtmlukDOHGUwEZT3KaPrwBP0KyNpDX3xw9q3d9WXfkEMNzCYX\ns3ceaQ4j8ZhT4V7r4zEEO0/V1zKLdLSFInX1vUwNd5V0wksjtriE8kqTCN90\nhgJ1Cl0p3tL5suXFKb1/RuMrSS3Q7PDE4S4OEVGk6+N/IdUl8RMbetrMoUXp\ndKDdYMexHSMJxwiCCymBUx1eAf78+CDreeS+XBunxD2SEcfXH+g/enh+sUF5\n8gkoGnYSoRhAL1xZdngCSX0rPbxXVPtvMVGHCBq05oBxFikQHIa87pI9RgxB\nmea2GTyXm45PfO2fS2t3mpqdzQXV6Kg0dQkoQZ9RdffIf9vbS3HDr1Jrltkk\nNpPDOsS40laNtQE0dDOyZb5D/D9qJCLYkMwEbgUf1kd02i4f1pqhoMAUXkTH\nSKYQYqwe4LTOn6PP0DX2ZpT4gXFu1WknpXs1At6E5Q232NAOZr9tb6Aw/ksK\n6lKlf3dsLlH8hLZ9G9w4kaPLLJG1i3tdMsGrhXQ1E5ftwCI3telRENX3KfUu\nwqM7Aytbv221KreOktMNHYcbBQ4X+a8gFFWYzqlatmCu6AVh/fn8MNXUTLDv\nHCBZqYDfTbVX9atPMu3w7hhJsfrZt1rOhpU53B1AhuI7mZ7M+tCUTmzUofOm\nx6kM\r\n=Rsj/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+pD1eh35jl+ovJ1/gKZ1faj/PYM53IUCf1vm5ZKr98AiASPn8bgsAgOq/Kr+ZSYBfK2ewfE6k7bbhfYsdFCRX3lA=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.4_1561182190631_0.5584006988291674"},"_hasShrinkwrap":false},"5.0.5":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.5","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha --compilers js:babel-register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"b39103a6c154952ff5c868567e26e366367fec29","_id":"preact-render-to-string@5.0.5","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-nvE/iV0oF1DMdG+FbedyXGAGrrzYYYWJeUWnz0d6EAARnBzsdEI35EnRwvTb2WInycLLs6O4NrDRhXvYbaUp9g==","shasum":"ad12af2e7a26e21ad843fd86ef948bfcea4d1429","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.5.tgz","fileCount":19,"unpackedSize":149359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ6P4CRA9TVsSAnZWagAAqKgP/30GfO4QNhlxLdSSy75n\nFwyq8a4ANZOuznn1DaED1viQgLMXnHCAttAneiGK9OjEOqTYIObEmVfYxUaF\ne8escBE6mEp8l/6jTc/Zz0JknvUVo4tFplcwDHbCw+zTbde7I03r0J+2wx5N\n0IHeMtzZ8YLBSuN9UehOoyoor7atuERdBO5aD2FZKocL5H3eUD5YNY677VYG\nPMOWSqlEtuhnq+mOm5ptt88tbNRb40WqRp8KuFj1nBzByFxPc30lfLrnVU2o\nrLbKG0JloK/oBo4XBAgSJLIL0CljBU9+xMlUDbYp2d4colUdNPriEuzF03C2\nlP++8/pSQl5+db4/3+2AYcdaEtdQ6UGhWUyXP8Oahng+9JjahjqFSNw5r5b8\nkIz4igjilYyGlLDQxfhqbZeL7KQvFXaHGIrhhVAxc9cyq/i98RBhMTQVd6Ms\nxKUOVeoJu8eKVF9NcZN2GLfs+6GqaWEik75YOzdhXki8HvoUzhFYdavCkFkc\n0fd8aT0nwnD/tpdWQ6aybaciYmtziglprQlDH2LEl1No/vMh66Mg1mMSGupQ\nBM2CnBe6dCsgOMfrYgEGzMqz/3/5Z63nCZP2zKCS2oZPrwbioiR6HxBU4AcE\nkCfrlUqw7scVzgplsXthk+4VlI6BjRS18fLEROEZRgkG3lyNk1HutoOhDa6S\nCT7m\r\n=m87g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxgbXq/BnTzVFYXNK7K2AbASWNkdD7/51HTotvBsxlrgIhAPrM1zVfGk+GxdBtwMi7E9kcwmrOSout83emTAsMJ9bg"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.5_1562878968071_0.20188964743500004"},"_hasShrinkwrap":false},"5.0.6":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.6","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![travis-ci](https://travis-ci.org/developit/preact-render-to-string.svg)](https://travis-ci.org/developit/preact-render-to-string)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"64aa1c0c2dcac08e3eb8182304afa48713b48504","_id":"preact-render-to-string@5.0.6","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-VOsbY/YNPJVIxEdzkUJNwhZNEOE5/w4lbEAsBvhsImbpeDsDhCtUvzpZav/j8tHF8HcG6lNWljmkmXfy+KEnsQ==","shasum":"3e89078f78e88157a044f91914b348894cd18d03","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.6.tgz","fileCount":19,"unpackedSize":152738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLIAnCRA9TVsSAnZWagAAkwwP/iJXuY+X4suP6HKqSTfc\np+ptvXph617TorOuCewnTCnp9HIRYEtdKAJedH608/kopx9BvPk5i7NM79Vo\n24Az3vN/azH7U86SB8o6MKaUC4e1qxIVTx3XUKbFfRYpfYrywsofa66azpCc\nC9boa3WcqT349uQtTSCBlkgJYF3Ll2KOdE41EiInKAaisGcP7X71KdnmVBuW\n+8xGEp9TxgMEs5PUzm+38ZDl0Zvht1IQ1e1Mhmc6IO4BXCZkkhRsTIVItOBj\n7ap2FKfYgSIGGYA8NmiZrP0zDdK+ZxG45ojak9rxfrSfQz5H9ZGCer+KURjA\nFm45v6Dhzwu9LvoYWOguUYJBnx68ypTt9INlepWmxgQszfTxgQ88Emc0JzXH\n6P4c8LtyE0rZFC9nsqFGDnkrNYcgjcb873OqryPj0i2xFToV+FTm6TQi8Z3m\ni6bZv/wuIWx7GNgasBGC9yJx/1VBBZSbGdeaFY66kDyet3godDb+5T/u99Md\nH0c/YdqlSOsbAtsZsG/u4hh74HdXxbKtQDXtojGlWcRgYB5JoUbat3rbQpKL\n+LEUj9HestfPAczrgverBFNnL19qdQQBo9lDIRAr9aiuknPpSAGTEJMRJSM0\nKngXYLtweA3QbMlxZmLqt2n5GxFfA6WyjitaxVXtG0JqKrkNBMlkF6eUhrm7\nm4kP\r\n=erod\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHkocUdgNamBvPSjF2EtjP1V/ySSS3VKebFzemlW7dfiAiB8xu0yMDu968lEM3b4YUOEIWhZb9tHAz7dzRqzlvoERQ=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.6_1563197478451_0.8157190655189528"},"_hasShrinkwrap":false},"5.0.7":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.0.7","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"4234f3413fb4b8973c810ae72c1751fed1ac433a","_id":"preact-render-to-string@5.0.7","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-WJQJb6HisjGe2J+29Ha2/9OgEZjVsoYNUc11UyfQadDuREvyKCqR4ZY6KngthKgUT27B+tQrL45jI1B/BEeXXg==","shasum":"c7ea12ed4a323bc37bb42a4fa587494f8879eb09","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.0.7.tgz","fileCount":19,"unpackedSize":153578,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdo31/CRA9TVsSAnZWagAAMK4P/0Z0qOF49uc31+A8Nqcr\nfHnWooqS3BfxKRuB3OoQTH6bWcMCJe+7yRHfaXWY8FsmtLCAd+5GrMAtvHt9\nFIM+Sx+JJ7pYeAHNvJDCwabBKQ9oN3IMUhEtC+mWUMv2fqvImp/iR8ehh6L7\nZqOmnyi6dsWAQjPHSNihvFfe/IR2UaN4SRqFgSHqD40L8XJpB8mgOftShJV/\n9VDxnE48OI2pAZzVqJBfTSJqKpP6HPeDbQiufBUXRorrLg9u2rS4ineJ+Zlf\nl3UdEd6dnMShbuGZsgNbEJV8dJpyweNVd/CZkxvOcdXfsbhxFyxMTyvcpRr1\nHBvpNoczmq1a8qallpWHoXkQDmLMysGcnT1baypSXFlD7ddHQjdf19xbj85/\nJbPeZL+tX0qbu0RzxWVftrpoaUIYe+JVjTU3uYe2cQDhldDafP/RwLY5F+OQ\nFADTNwti4tNgQvREDjtQj+5uFb6VljXrrf/NsI163Eb5UJuIcVW5VyYI90Cj\nyPyakaqOC5Pi7oIuYmFeW+fx6rbT4/cMqlAZxQNOUi6f9tIGljlhsE+xcJxJ\nqVGVVbt0rpWKsbnYbqFvEF9gh8j7LQiwMjyNsTbgFAtOOr2WNqoPGq5FPq8P\nJn8mWJJRNCxyixy1OdM4PeYxuH+/xyUzPNB61TChBIefDYUXYY5RWOGHh5H6\nqc7/\r\n=PDN5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICTPTgUhd99D3/7yU5kX8xe0MNvoj6vCLN/Z9hnEncOuAiBVIHMT1c733EuYogW16tT4iBZcyWLXK+60PcFF2cBRXw=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.0.7_1570995582341_0.6939192963668352"},"_hasShrinkwrap":false},"5.1.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.0-alpha.0","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"23fb79bf9ff4d227d2e0c4a4b33a361e27222d8c","_id":"preact-render-to-string@5.1.0","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-BrZeeppt4mLyI7fkO6P7pPBKVL9CjA/ckWMu3KlYOJilvqjAkvP2p9yF0YrEeMvsvpbWmJqpDbaEmkEoTtoJsA==","shasum":"e810575aa1a0981836c48458d72c84976f9b1f7e","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.0.tgz","fileCount":19,"unpackedSize":155318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrAqoCRA9TVsSAnZWagAAq5cP/3yo3lTtwqYShhs07LbJ\nqdjiI2s5XN+kP7wmgQcrr3zJE8JMggrOx2EfkWjgGOItkhS/0ap99aJ5i4eE\nnCOi9+rjnsNMsTCCpi0WXWCp1DlWhSHStpqsPdw38fU8EgXUZ6CtMWJ8dqyP\nAU172o+Z2VMhVSwFEeQaJA+mqmLROQT/l0Ld2G3Lhg5UM0S5phW4zpPi8sDO\nTZz/5GAz4yS5iVwNZqoAKLXjC/3aNViv4HmHuCLl+F7XrJjfLsX/V0uSFp82\nFuOfI4UtmWiQE/f+LT+q4Ovv/+J4KYx21gKfKACKx3D0z1z6g/AT5Wx37u8V\nHP6ZBI/Y2n/iNqZdkqxK2fxrELe+sU7pUEQyPH0M4qei6INnmDe9zLr9PQlQ\nMBU5F4D0tvA1EfcDiIF9mpeER8mW9ZtTO4LVKdSJWfFGzbOpZdJpTLloI6la\nASN9kdQKazkHdFM+tvplVaBuGccWgVTAavS2ircAQBBVuDsmygZoJoH8jIl1\n6nuWANlKJizexpHReztD5jr2exIUrM3kPQSyxFC3rzrWV6hBEsSxUfNEcIzp\nnIfRthP2M2YCDE4R7LuhIC1QOJ7UPytKTiLzG6297kxLVCYLI1reJTD785NH\nipFcT4RoFkCosUyszy4HufKtWv9OJiCs8hOwhWpsYFV9BFRHTe1l+ttr82ha\nN4BJ\r\n=nM+2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF8VJgik1vQabw/ro7/hPJXfqgCP0HHLdZyxaHboHVzgIgKSUq3OiKNjaNRR2oyT8XW+DHlJ9zovOFSTJ6XtvuQHA="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.0_1571556007903_0.5224837361839658"},"_hasShrinkwrap":false},"5.1.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"29482d4f09931285b736da1eede5995020d16917","_id":"preact-render-to-string@5.1.1","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-/pmL9S7rgNnyfNPFIaf2eWJHf2Dc7kdbI5ALET2nq72KvHqjKh31M80XdEIFYUci/nq0p2QuVutnjq0Uv265bA==","shasum":"32f9eb16413a5c9fa6d9c43efe21d20697275101","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.1.tgz","fileCount":19,"unpackedSize":200542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdvKudCRA9TVsSAnZWagAAC2MP/jcJReQb9CK7S13XvYMm\nTyBluWD6QZcAnfI4qpcKDdL8d2+jovUn7gFkT3sxT7TyyXUIzjkD6NWUVj0I\nBznV5U5cw3gTDv+6EKmGbHxS3L6P+DYQF7Xm9Nj3PqtzaAvml6kghynbduqh\nDVWP4eVhgbnszESH/qqmhzvjbDiEsIKjKLepva1y5mesIRy839jC5PcaxObP\n8rEgliVwQgEzR+1ZCHemHMeyGQGAM6Vqjj41/Ekc7Oy31RCEtn/zulgYsVpr\npG3/HSrAblLjzYY8gPM4S6zW+De28l2uSPlbdWbNgfOjxiCXJsvZkD6IqKV6\nspX2pFYoZvR79fwnnEMbSqeX6gkbD1WnO542cxvVsAEl+mODeb3+ABrfcF3G\nZ5HmLwK9LZMwcsgeskcHUw1zuZVI9I5KAWWGIcM0kX+vTUS6JcPvNcNNk5AQ\nK3kEx53aoEhrAIolGajJ1xRSNviqFODmCkCK4qIUJLibJo3IPxCRJK0mRzTB\nH09Zj1p2wxF8djpcDGcADozmMQfsVAUeiZC3cYbaAk3vzgFm4Xw+O8ub34gK\nY1SD7dzO+zi2GQXD6PGc7qz0UihvBh57W2qD5RSmHXl0+yLn9tkJZBAaqgcl\nAMQUeKCkqa0n4ouTwE3sOsob4+vqOi3nstiR5Q4i9VxGOKLBkiFmbW0I/3AD\n9MSB\r\n=CvGE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8puylpmIN7DNR8ay/8rh3DoLC3xioO241Wo1sKuqzQQIgftEysloP+goaJprcsiYsZVxBhm17qBpBjrPHfDlyFQk="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.1_1572645789435_0.2899000606186821"},"_hasShrinkwrap":false},"5.1.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"415a377d37a3cba033c1d3bc2f19467c4897a8bb","_id":"preact-render-to-string@5.1.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-9nfjUMUM0NrxhHCBu2zSRDuSXPL/uebZocrNHsSM2vTDxM7p70PpzaQXsV2HCIn+W3X/3BmxJ9qdx8gvi4mByw==","shasum":"c7421fef79f2ecfef350daf68025a9854d103a91","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.2.tgz","fileCount":19,"unpackedSize":203479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6gYYCRA9TVsSAnZWagAAeiMP/R5ji8Gou5Qw2w1jW+hn\nleQ193DB8grfxy2h380HAANOvLHSpW8BqfLWVNyW0IzMx1qcjnAU3+u7h7nK\nYb+G2ubkWBDzDUm84iORywwpaRiYdmkwyplRqtLH6yUG5bhFOr3o83Mcjtlv\nsTEUo8AdhAD71I8OqiNaWEHu3sCxHmwtcd2XJHmbxseJzhoDSr7/xztJsiPl\n399W/5ohgzxeXRnYys4fYnY6HwLrgB3dGDgStHzUOCCve7L3uWo/a2tbzjc6\nDqh+13HQWijM0BCoVXG5GMvdt0s01o0vmuFiB3WR/1Vkl9ySM6r/OMo3a4iu\n6dJPup59ka3xBGYdwxr1yz7yfOslxu7U1yN8nstGoxKvMGkLSp9G06LKEK9F\nRlbPviZMw8qgeB1w69V+vAH81gXErKzo1xBC2Ijp0Q4wNI62yp0ak9O8qlH8\nOv4kiEs3DQ5dcfOeoTSCjLYXto/lvXas7Tru481amByvgTC07JL34+kZvtOS\nayWSzwmh6zX0wBZOwRFBTZYNaESuTu6NXDkEcJenUt5Af9tTL3mtXbCWjyeg\nE+EWJevbTPsmg0qNlru4qfl7J7Loc8h6gcrok++rwshWoxJbgnPIhepW958o\n+JpaEq49dCRp1C1KVbZ9eDS1mcBmevrT6Bz88VgO3I1lPOTouuxvGViS/Ke8\n5ZGf\r\n=/YeA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGuU99rnMdo0Gwqk5h0Q4RmgitbLNunEZ55A+HXUzbxiAiAwdxZJIZ6qBfpWOaGchQqLythYv2gQlP/o9fHeL3aFeQ=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.2_1575618071986_0.0293331472514049"},"_hasShrinkwrap":false},"5.1.3":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/index.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublish":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"d241cc9e7482e081bb4303d3652cb411ea3dc33d","_id":"preact-render-to-string@5.1.3","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-fVCd/qidYNiVSvN4cP5TVwI5VklMdrHMvcz0Z5mvwrYSKCrX0azInroBrKc5x6N9VtqMViMkYWaYh54cO6psIA==","shasum":"b448570ad7c2f03d1b950c1614a05187afde40ee","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.3.tgz","fileCount":19,"unpackedSize":203826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+1BqCRA9TVsSAnZWagAAxTgQAJtjQj+NDvqzZJ9aG9iY\ncUVFefiaOc6VtEpaG2GT3KVA99/kLxr9y8wTq+vPY7sWi8caDr+LSQfdQ9kc\nuW9gWFrz21XDmyV3FkUx0vbAh8T04svDD3It7VUFeXU+mvlztHpIKYuUL6rh\ncFmPvLHDXHlibzdkt14zv896prgtmDGWj9dNQGRv70U6ejVNUya92gZS2BFa\nj4LqOv6QNCRqMqTgMxyRGbn6BNqkpuBE5/OzKRGWTTQF3Zw+kV/Cx5EES8MW\nxEDLQijTgHCrIQpQ3Aer+WYFCIS1CUrv+3MTaU4P6I8muEXBdnvvr1dEBYw1\nKjy+N1iP37hAfIgnU6wclceyq24bj/+S7KzVSCxKDVQg+QQ9mMgkrJL7MLhJ\nVV9SSqVHJXv0Kf6m7eTM942JMsHBpFdzm6YYNx2BYvNm+hxxDBs47/ap5GEP\ns0eiMdUA1LwkWYDOzvtt6dnp2cPY1B3T7Hgv6DgsbPJq4oEyxkqZ40T6Dnx/\nFlUOZuMBVpDNxMK7ff76RnXIfn6MXSItxFRTPU3i63ee8i+RAKC+Xee4fxfy\nbOt/Qg8VMbgioIe6oPiMe7cGBU9lQxKZ/9lvfvZ54vxyx6x24hyUs2DaR/Fg\n8+hBG0uFDpYk/gVmRY78eWXDxnURQ+o52xO6lHHLupvcUr++4rWNv074e72u\nns8q\r\n=OEWP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTIG7P5iB6842psxoiHk7v7bqFzsZ8Mf+XOBxyDAOg3AiEApP/jaZoCAXDRfjSfC8eDLqbsbx5PqQKWXk8NzBY891Q="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.3_1576751210076_0.3322854071042036"},"_hasShrinkwrap":false},"5.1.4":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.4","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"8fbd47324c8529927a7cca0d2e797799d2909444","_id":"preact-render-to-string@5.1.4","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-fQyrkbn4Ustz5Gr4nQuTu2TIS+8IHqkIXf/SqstA2amgqLoPI6Z1e6Ttk5OL4jcE3MC6V+eaeRAed39sn8Oh4w==","shasum":"f26171f58f0e93b36236e4b0bee62ce561120b7c","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.4.tgz","fileCount":21,"unpackedSize":204931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKTObCRA9TVsSAnZWagAAYA8P/Au8HCpkCMVSMYUsAyR1\ncXxmlihHowqP5cBwySqRdOGHHb9SVVZ+X8iGY167BHAt6EWOZT2to/Ef1AyK\nEwJRJc2JnyJK3XWo4FW3JhRebmCUibg8s96lDK1ulP9mf4scYrD5p1HYF+rY\nVUlpO+zmQb8q3FObzVaG3u46aApG8P8nL4p5Tdn/RafD84zVV4c5am2h+uCX\nBDHaL+1+kedtJFVyrkE0vRnF9rqLvjvlkRhz8R7jHlG/JfaoKKhLaEY3rcbH\n9HDO64tIpjxW3d8Bb7MJgOykYk+aSVy7GjxuZDdb/gTRw6LNMQfg5VWX7TsR\nN55Ie+pfi35a9vpXnDgMuJAfRLJXqXqBwvUYEMd1cA8pYsvo7rTqOfvsNiWR\nIArLPY8fd9bQA3f4xTBT8PMCO7vJ/X7HaxxKBGw/Nm1OS++ybGY8jZxnsNOM\nSAYeXrJozTKvZGFfcEHaubk4S3dHupxtVfThfZxVFzeHJWqaWZ8vAB9TromE\ncfIPrR0OH0ubJAvMN41MQjBJNqLn7D5wPU9bvBPqHw43k7phijufJlxdvag2\nsKanpkPtl1z/yZ1XJ/bvv071oyMHfnzBoDN0KXWHV6sbSILZFr1OyUcEVOaZ\niqhiRWBokELKsLR4CBmk63R3NawytVH0eYqp6bUFdoGFMZPZZ6DeDxQ5QW2x\nXDit\r\n=fWbi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkPI8UNrd1YosrygCDO64nKJnWXjkZMKMFA8G6cm7ayAiAg0BgI1bXmW0NBUuaR/Jk1x8fhOV2m/1Y/p6KJ35/Ztg=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.4_1579758491211_0.7951020808294547"},"_hasShrinkwrap":false},"5.1.5":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.5","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"992c65e38ddf44a3e287aebc55c8bc6eda2310b4","_id":"preact-render-to-string@5.1.5","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-/nc0b/FkOBIXFSy1etp9xI6dbHgs0EhtyXk9VuMwJ44w6YSVT+Gnwhp6Kc+C5AvEzv7wOcgvCfe62ksdEjQ0pw==","shasum":"991877b954c85c666100d52f23e2eaea4c131472","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.5.tgz","fileCount":21,"unpackedSize":206075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejNe+CRA9TVsSAnZWagAAOM0QAJoCXv7XEGw6Ki2jhQo9\ncpopCb3UWPxJilT/wUW0Sjy4ZJkmToZxXT+xQGfROoLGQJhsKb5WsY+o6cvR\nIer0UYbqCkmagYAEAs2jWF3M8vJEzBtvk9m919whhxytfNTqd6lklsHviJ9E\nT0bF0ISjzhadoIptNRHQI6U69T0VCeQKHS7Yj8s88mFrmHO9m8Lykp+F9WL8\nk5xTXFIxti0KyhHGSvyuONchXtrNqCdn2GL0CFdMRPhevbB88PFkuxzhwz/8\nU9XG56PNyRpupMNw6PaHGzwsCjhdG2oH29XyadjBVkADHFiDr5a94bLAJwWx\nFBXrBbKKH9/eCrO68Flqbodh8NlnDSfFjAng6Ikyp0Hh3JHvltmYsycKONq7\n2FZ/lrBm8C+j++4OY4yItMYwbKaXJjN5IP41Rb0uq/BPfWLJBoxUy6nprkDC\ngn8iJiycYOmiPDmBNuA9FBO5j1NLOPP8rFUy/Ladu0kzMrmudcxo56VyTeoK\nDZxfRFLjMcD5sIUO2wIiJQUP3ugkEfDNSy/tU/RjUibPQ3LzAhX/ICJmhXjK\nnfg6BGVzhuzzDnM+fCo6Lifv/Fw6iux07ROl1puMCZr1G48t/5Mn1tnjW/DX\nvww6sfxlEPqD56c8YejN8i9BlRgx50FtKgiXhDP+4auQg9l18Bd91taPhPCk\ntnB1\r\n=K076\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR4f7Z8+P8KAMYqES8Q4CnrVhGFyH1cNMt3nX8qqvVaQIhANlb+y5mk1M0b99lDpN5naaTK8pigbRviNmL1cUfXjko"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.5_1586288573970_0.6661931747369643"},"_hasShrinkwrap":false},"5.1.6":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.6","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"4b10aa948ca52427348d44659082a85e3b7a8382","_id":"preact-render-to-string@5.1.6","_nodeVersion":"12.16.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-/8mDzzfMrxx5tzJazKGdyYADrmjzBR3QJsvdZs03aV9VjeXpDrzDHs6dhzlMA1EsdCBq4cqioKjVKUs58uNckg==","shasum":"6e8f6c7d657743d8bb27c8ea3d5ac218354c87a4","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.6.tgz","fileCount":23,"unpackedSize":231294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekJe1CRA9TVsSAnZWagAA3YQP/27l2HPqLjvBkpdvBib6\nR3E+h3kcYpaM5OlawRUbAlJvooJzLAAW9SU0n+aIu+mnIjWrLW5U1UaIqz1T\n6Wdzb6FpEhli2CroVZI578+EMG0MtU7bDnlaiFghAzbXYrYQkgK9pzYcj2Iv\nJBktBUW7tcuSM9/2OSQ9MX4KQ9ZweMQ6mvPJKZ9tDzHa6leriup358xHG2iE\nq4fOpkeigmHJ8ebrLf+Ei/Gb8ECbSw6NfOYTuzmQiUsynbPJjnuezbBbPufK\nUm5M3ku5W0bALrO/TMQ4Wwa+475IbrndkwxZWuQs4bvDj+aeDBViv5kby99G\nCoVRoosm2cyTbEqzcQ4NxA3A6q3/JbEyH+YCYfpv0QCKtxkzfg4kA5xxXc+7\nAjBo+dzMgTOfSQEYXMLAO8pCGmRSpWvruEXF18ukA5lefE/vKKreLVvBE9Un\nhV5WYMiqKKheYgNVB0mVLMmZhgZaIHM3mLgISscHlJrAGta7rDPZ8i93zqI/\nAkreXLMFq5k6crkC3xaWXDCKNkOnEn8cH2IWVdEnznVNAnlT4W2Rn2Zj3RVO\nUYStWfCfLXNI5pEsgItZMLr/rrLEdYobPZZ7JhC9AULzoB8Pl/MsbMmCsHR4\ndYcVW5ImTHJ2szxPqgJkAkVUVtJO3jh6wHwF0US7g57i3vmMEI6kelyeb7ah\nzt4Z\r\n=BLjk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOW0sFIm8/R25GtMInUEQyzt5iF8Jvl1s5RrFDV719uAiEAtMQ/6Uwij2M19upJrm2VgyeTxWWlriTSbavMSddm7go="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"developit","email":"jason@developit.ca"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.6_1586534324868_0.9271742543808306"},"_hasShrinkwrap":false},"5.1.7":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.7","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","browser":"./dist/index.module.js"},"./jsx":{"require":"./dist/jsx.js","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"f0e18b03859c6ae2dadb7ec5df1fdd364fb71c5f","_id":"preact-render-to-string@5.1.7","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-3F4qvUsbiS/ZJ0lOHF+I8aye6x63QSXeOjaATJ6KppJsCUJW9adHa7CbBYX7Ib3DlYDp6PFwfefxK72NKys2sA==","shasum":"97a833504b28f68e47ba5d17f6a44f74cd489d32","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.7.tgz","fileCount":23,"unpackedSize":227912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesHhjCRA9TVsSAnZWagAA7HYQAJ7eB/KnacdGI0T1kxHI\nmXqES3wiFt1HdmUrFF9FwzjKbqZbMUu0vvVrtTxV6cSpqRUrPmusyRlXOzeq\nxhwp7of7w1vgx3zkVp5RephZulx3IiP+aDJXKuPJL+2gKHYtvPXGQAvMdWeQ\n7RalGDw1am/K13Ecl/ZDrjp03Jypn9lVzMFYWVQcQ6tS9DK4y0kjsz8QFRoI\nTLuM4zvk4sT9pVJyYK5V3BhNvZynGDJZUOvYcCt/Cb+YqmZ7y+KQ6kBK4NyF\n0AlY7QBddJ7jK7TqJ9uugS7cyRXhdc0zbA1ndzLwpPxiAl+bgMW9vpJ7qI6l\nt7WABbJ46vg81gzDOrWCF/k3bzvbc7fZBOfzy1/uH/1xOVkzcb9uSQSHai2Y\nOsCzo1e439s64YtrIhkslUe2vc4VBigy2zWb2EQBDon0aOzThZ70JykMu89S\nXy4GypkmXDIpMWSCR3yEwhHgaeVunKL8DirI4EVLzGtijKpkx8wiNQMKBwpK\nSFijgdikZ5DBgQoxxLEujoMKBXt4U+Yd7nA/xcv6LAEm5Hzs/OIJoG6sVK7V\nS92E4WQW7X+y8n4WOPhUzVVdjWLiVF+x3XLREDMgXdlEZd7P5dUu0mBpDy5M\nkTHU+ba62zA2H7fkoseYFOoNu6rdGq4qa9jyuOopodCliGX9njtzFwCtfSJD\nSjSt\r\n=/fdx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHuzMc1oA9PGOG+8j8biyIYX+M8dj4Hc52VVPBYIUwJQIhAPvZYaGI8gJsK3Yyqa61mfolo/X7turoZ6FaSJVY3v3E"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.7_1588623458945_0.7154866466177754"},"_hasShrinkwrap":false},"5.1.8":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.8","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","browser":"./dist/index.module.js"},"./jsx":{"require":"./dist/jsx.js","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"18332cb804e8e15ae852b4cdff53c862a777f7be","_id":"preact-render-to-string@5.1.8","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-9c2OFfOJ2Zi7ppMbHYC5lx1ebDFXpDGBMns9/YaKMgZGElUY90xTGmsKeNMqrNoDo7ImYPh715Ke6Ah/pdjW0g==","shasum":"5540f4c1b1fcf1e7c7dfb154d38053e717ca1fe4","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.8.tgz","fileCount":23,"unpackedSize":228805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetTHGCRA9TVsSAnZWagAAr8AQAKPC+b8r5ryA2LO21m1i\n15ZS67MEPPFb1jh5KKuLKOA8eb9ewROs4YhVUvdRDDh0/GiSqXXolJFrM3EF\nNQ5R1hHH4hm+N3el8eiURQQP7RurUYMDqdW8d7xQyXFvRaBe9n6YlK/1Qf44\nlWzOuJ7Xz8SqYy6wccb9mQv65sYgCNOzWGQomMrHx4+GLBC777dcv8rXVrRK\nMiSKYZBy3Oq44vzRj+QkQKv8jGpoPawSCkWonV4W69796d56Fq/KkfXElw60\njmEDqDsXQUyURtyudHcW0u4fM6qrBRsDfCHgjKA1S/wnq/sxzMgpmW6IlXBE\nGmcuadENQIibnM0NuEzJS+oFT6/kbLXlWjzKPCEcOeU2w0K3qCBnry9elSOo\nh6LTIHLMhnTf4Z6cgX4W+d5qBIFZ5L9UZqzkZtxN7tEtabLZ79zsQtqgq4M6\ntxQjmHC1XsvkgX3FqCkUIr1MrLlDBI6eZpaeLP8llWUywKx2dXIdesmt0ePY\n8kJYJytYHTe2jEXyugnj1HV9Y6MaZ8ZzlhiVPtw0tySs95XUYiG3lf6ZL4LG\neiR8oLT+SWRgSEL1gHjZfWrexuKqK4ErHkhhJZKk/5YLHp4Qz7P6QNmMwboE\nICX8+cDDXGD3Kpf+50oC2bareU5jy170ma+NIn2EGnAc00HslPx71KUFvpRa\nCiQC\r\n=d2gC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7DOM9iMr+kRJd29aiHHAteqgDXNVahwYd+uT+8LEcgwIhAJwoDoKKxyiyYHOPAz1/S9phnJUL0tDHqQh/SG+bk8+e"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.8_1588933062446_0.27669225703536515"},"_hasShrinkwrap":false},"5.1.9":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.9","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","browser":"./dist/index.module.js"},"./jsx":{"require":"./dist/jsx.js","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"09d7675bc1ea76e8dc50658bfb889b82a8a9beed","_id":"preact-render-to-string@5.1.9","_nodeVersion":"12.12.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-fuuZP/nBcsYvfI5Mjs8R0wVA8jPbnAsr/UQ5Y5/p9Qg4HAz9vSVJ03iejBVw4YGV8jkUCJv0++k4zwp6qjx2Kg==","shasum":"201d7bb4c20899b68f5cbda705d36c45305f7efb","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.9.tgz","fileCount":25,"unpackedSize":314506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0W0cCRA9TVsSAnZWagAAD+AP/AiAqB6yTS8Ka7YX3z5c\nbbuIRZmUddQTJPJT2qYqWNHZYvH5HTN1kGVRX4h6eh/FLFwR5fgK430iFV+P\nrNX6MSaMuVf/L61WcO5MqbndYojzU8UFS4tICN1PfEFgUtf6QXxiyG71rvpE\nzXAh6+i7hsTUYynRuf4PaWEUgiX59lg3r+XHz5PeGT7FjtXqdj6maiArr2SI\naS5VC3dIXnmvwZTx5vFjY2K7O5Cf41S+PUjNucIKJkTReEM5FWyHmnhHDFy9\nAxO03Hq/HJ+IzeYz0dLgSyEyRFQRU1bScPt1RtR7QMyzvlVO6ePYjzVi58xO\n1DRjs6bYvvPjDN5w+BwNrTSRgzWhowA/70ONVizBK2nZ5DJDJw9l/DDWi+Yh\nB7peE2JAE+qvNZIO2U88P1my/4FXHu0oDKcCbKrtiU0ecefOqdY5EAv+Vtme\n0SsAfKBQmv4sOtdY+XqQn7GbWlFirg68Uh/T6vpLr4maE/keVEz5zAFfpLH3\nLPP5zLW92xCzXaH/Rw78ycmvay9s1unfSFJvrY6bvgE2uBL7ri6Q8RR4RFWZ\n5HEu2DKwUnKwsK/ynuO5lbexwQh0qnR+0JVVR0tp2KTzcTAaSk/l0yoWLdl1\nP1X+kVrXgcYStdWl+9yOJohGrQFOluuQVjLCNgVHUXf/7DjoC7DG33bQ5+UN\ntt/6\r\n=vVbh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCV7zqq5HaJSDhq628b99QuyYSgvuAIJSour3hJNne3KQIgfcsWN5xYk3Xtxw908/6O3odLMajeqT+uiLMr5lRb0zY="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.9_1590783259681_0.46063041311609254"},"_hasShrinkwrap":false},"5.1.10":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.10","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","browser":"./dist/index.module.js"},"./jsx":{"require":"./dist/jsx.js","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && mocha -r babel-core/register test/**/*.js","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"gitHead":"fdb033e7d07b0b4369c409d43891fcd10159026b","_id":"preact-render-to-string@5.1.10","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-40svy7NDe5Qe0ymdsIC11f0hZb05MeTSUqqIaWJ5DEFCh/sF86KcpRW0kN/ymGYDVVUCfv9qFrVuLCXR7aQxgQ==","shasum":"cce03d73b166c550148af9dedc9e06fdf6820f8a","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.10.tgz","fileCount":23,"unpackedSize":234596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDZhVCRA9TVsSAnZWagAAW0MP/ifq/CqqlwOlkcP7AXgb\nAwhI1j167V4QbrT9NcDUy8e1zcsT3eFRqUc92PBd5HQmfpCofNjU1gshNQVQ\nYwz13UtFa1MaZu7lBciaCQqzVdhZS/P28T1WYEqqpHTCUv5rKeKmrj9lpPzq\nQmBpOuiJ4MbwvAl55j9nKvfWgmJmSt8cs5lKH49+ShTWxi7CpGJ+tSqDjJ69\nqt/u6OXuGunNQxDOZA7VXmRBSfS9nLQzwVLWkXetixsf9CQ4bU6C+d7sGPuN\nXGkCrn0sGJo/fYqwMAQyALUNIvAYCfJQHlZcZId8gW/qs1u6v9DoNw2qUzFl\nyNFOhiQy2aUWEsO4ash2/mx35Otu2BOrRbts8B1xVHPVTSPjDZmnRKuxTDyz\naHHHIal7Sgb6AIRHsGWn29pNIBkxy+Ht6nLFQN98dQjeXCiAtcwClQDbJ3N8\nZanxZ64bGon7vGtxSuoHk39wjEZ8dD/g4RZzWfMdkwT0RqaUj7dl/miQbDfZ\nC72DmOdUGR2a2pTwOJiIhiWenEORoecyC22DOQpVvaSvGCmoAfPuSkoWA4Rx\nZ6epX4Fw38B53cEoetYtt8j9RyWhutaB2p9paycZuoKb3M3Yas/iVaqGokLS\nnrn7XBKewxP2EgNRFN+mZSqdfWCzrhF3xXTDqgIHQLE1LGdBccrJWxSwSMAD\nK5Sd\r\n=Ixaq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZUIDFr9fSzKkmU6ejoM4/xM6rseUQEtn2T3O9CV03rAIgWQXZHSTfCnNdj9gHuTj2tmcUQPJk9OgrEkjvVDn3IKk="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.10_1594726484710_0.026651741593970657"},"_hasShrinkwrap":false},"5.1.11":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.11","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","browser":"./dist/index.module.js"},"./jsx":{"require":"./dist/jsx.js","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha","test:mocha":"mocha -r babel-core/register test/**/*.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","husky":"^4.3.0","lint-staged":"^10.4.0","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.0.4","prettier":"^2.1.2","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"9a3c65689b7aa66dba3be319777dcef9e488aac1","_id":"preact-render-to-string@5.1.11","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8DXkx8WzeUexYyh9ZjlBSsqcJVOndidw10t1MK1gLx6at4QxQE3RfqaObPgy5WOnw2piyh9kanNB7w7+dmaq4g==","shasum":"7d8d77c23ef40ae6abc3d390b7430b3cb6206020","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.11.tgz","fileCount":23,"unpackedSize":241571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkJiUCRA9TVsSAnZWagAAaTMP/3NpXg3PGXWmVJLWXlTa\n23mVtUGPhcGPvSsWuVmbbtdYjMercC5ZVtyCi3af8CF9Gts5HRuO7tSKlurX\ne5yv0Xn1q6B86C536WErt28Gw3d3qLZ8qvTJO6GBhoK+CpVOmAHEKbOBZeOc\nRcalf6AG20e/vg6E4Roff4MDY5wIqRAgFjrtXE0QVmVnIyhbpmbB7pk6wk+V\ncOa9peEyqQ43UIdYsqs6qveSDXwrxvBRTaxu3Xd/h4eHXBhfjK9H2WOx+8Km\nU0ok9uOy/ewe9Yj1rz8wA3V0h/evOZtUxinV2S03lUCLMVwc7Je0XAO5xzua\nP1hyzRi5tgaJP9RlpBLL//DBJEla8S+GjNk2QmZZK6gzhkCJKDV5nAHnrLMQ\nyW7bGlyWmGmnetYW7+xMtC+b10nz0VR/7CNKgEvzeRy2aJqdRSheCrGeJ9z3\n4iFItFZMnodQMd3awATGTwy+24i8lrPZKcbEZrfRMXqsbWFcVU2kuki/f2fb\nl060mzjbfhZco+vCiwaqdBZre4yAunUtUbfGdnlWXZo/A9GYhjbFdObJO4vw\nbcmDVBEU3M49bjxC8C6WOWCr7aNM00cbrbUXwWAYbfNElLn10WHE3iQ9EsTt\nj7EiKXcYnMvdEWk8Cgslblre6ydHqRFrkJhPlNTTTHImLRTaEB67XlvsYpCc\nZxne\r\n=nY1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBpF26JDhG/6a60U0gTy01jSvN4nVBh/X++sMTxbZoFzAiEAzUy6U2Cs9tL/uNaz6xmnGPHIp/MfsP6hs86ccdggdHY="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.11_1603311763874_0.591393992494053"},"_hasShrinkwrap":false},"5.1.12":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.12","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha","test:mocha":"mocha -r babel-core/register test/**/*.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["env"],"plugins":[["transform-react-jsx",{"pragma":"h"}],"transform-object-rest-spread"]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.7.0","babel-register":"^6.26.0","chai":"^3.5.0","copyfiles":"^1.2.0","eslint":"^4.19.1","eslint-config-developit":"^1.1.1","husky":"^4.3.0","lint-staged":"^10.4.0","microbundle":"^0.6.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","preact":"^10.5.7","prettier":"^2.1.2","sinon":"^1.17.5","sinon-chai":"^2.8.0","typescript":"^3.4.1"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"8be957a05c3bea7465c9e38252117e1def2c843b","_id":"preact-render-to-string@5.1.12","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nXVCOpvepSk9AfPwqS08rf9NDOCs8eeYYlG+7tE85iP5jVyjz+aYb1BYaP5SPdfVWVrzI9L5NzxozUvKaD96tA==","shasum":"3d258a177ef8947f768dd0f2c56629e7fda2dc39","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.12.tgz","fileCount":23,"unpackedSize":245023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsDnsCRA9TVsSAnZWagAA+iEP/AtJtNiDOgvRe07dk0hG\nNVfEaSgkjgci+3QoMc6fv29H14SbbqRbgK6z1GyjGwScUmk7ll7ZKswFBiun\nuKTE3eykxTJdRfV7WxehcET443ec4lzL8D8VKcITKn9WZMCrUGrty8G243qm\ng+kfP8gwJdgbTXWCj7NxdyulcbtfIEWdEV6wconWq1JI62IN9PAMYUbL6WL7\nlgXZaQ9KYG7LBm/Bqk0hHOjad2YioZusLM+QQw3uXt3/IZGZfc1zEHgM9zXW\nz2Colli2OkacLF9GzOIkGtU9ZkP5FwfFYhq1L2ekue6/zeeV16vnvyb+1TDn\nlnwtCU2GV8x6K4WyzkhGX6C1kdMIttnbI9ukif23GC4Dq+uCtDL8CBTj5xXJ\n5wKSnyGHkoBNskKWwCPVBPX4ZxujGkB2zvHLC8151IpWz+MDR7/5qlV20yhR\nS8+m/fbgB2mrFqta/GJeFlIwnLKPAZHMpmDaGxVjVAFNEmpyQohcm5gEnZjR\naU3IiMgjU8lSfMIUMXmJhKEz/G0HkuRoikpPA37yVG5mNeTa1f1VdNZORxBw\nYRGY2Rf1h727IZfaIS7cCUd807yG0oB+RfP1qO1+MLKGOnjwEe49hukXN4A9\nG1bJ8nXVizDeJd1J+cn/9A0wbhEgvOdyCt0EwjrCo5C0crx4x2HwtaGFb/UN\nfpQ6\r\n=70sa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCTD8cITg6ou/MUWZvZ6vWQueBb9LFQHPkXF+LvA5+eAIhAOYkrNp4D7P/0PjqDyYy/UFHAbeVp/eBqypH7+84dRKY"}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.12_1605384683626_0.6609639962232596"},"_hasShrinkwrap":false},"5.1.13":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.13","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha","test:mocha":"mocha -r @babel/register test/**/*.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["@babel/preset-env"],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"742087f6baf03a3c42a0a9abaaafdb0e1b34fafd","_id":"preact-render-to-string@5.1.13","_nodeVersion":"15.10.0","_npmVersion":"7.6.1","dist":{"integrity":"sha512-DJFcsVXEotFE5gfjZtMTKB8SUj7cFpA4XIgv+VDoGWjkCU2eczrZbq4KUheIgh+U/a+XAE6wN8p6/eVrF/kyDg==","shasum":"3314f807e5c69925e0085ca30d29f0ba8b796eb0","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.13.tgz","fileCount":27,"unpackedSize":244712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRN7FCRA9TVsSAnZWagAA7EgQAIdhVmzlHoOTvF8wZGE2\ntqWjWU+vd6PEO/8wQAsB4LgUJsiON5Dqk2mfrSchyvlewjf4+uoRR+5gMXy9\nAOdHsJKu4cgRQ3n+tezEM0mUY14yEEq/U5VBQg5oC26Dkidcf1JZFGVJ4SvS\n7rK9B6ZVd92SgBqYyoTMG7Ls7bKubPvWohfo/bsJjs7o9wWBzjjrVbwIrVJI\nZnR8HoiOkk8KP9d5PoP5IrWZ4kA2RbGvKfZb7kjaouU4Lgp0rj2V5mII5+Pu\nDChhzcjtjRwBvLyJJVdGSxgUA/FLhVwNJCUee6bQ8ZvM0faEhWVQhDY8bU6W\n/VrizNUtlCiGPxx4U/QmToQkA9Oz71h8znjQ5DeSSCG1sI5kKqg0Pnb9+CUT\ntkctIBkjQlZ1g87cEwZ4EjFX5OCq5e8y47fzZqzWRPS18w2thq7KUh7gjCOT\nVJw2hDrwc611OGJ3Ph4YNGUknczyq2mdp2COo43GUcszN4oKDps3lp+r5f0q\nc09U3fWiavhCFLRC95vMk5lDCj/US6dAoSDjLWJWgDtGwE3gc7oKnKSY7p/P\nhNNuzW/75nftU+Tqr/KLZXma4sYLk+A5i317zv+d8HtUFzHbT8C7OSgq3nlr\nsNYh4jhNRfwhTNUxbNkPEcEGZp8+5fX2nCYxGAoSY/rvWfvXY789wj4Lg2rd\ngA2q\r\n=kRfi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFQnSQbsV7bhr8xBjL1m05Dj2bxfIuIN4153Cs53bZekAiAZZBBiJYoLsRgqsPpsp8cdTSYKrkBcHEYi5kEeqcmGYQ=="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.13_1615126212781_0.8042893043335331"},"_hasShrinkwrap":false},"5.1.14":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.14","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha","test:mocha":"mocha -r @babel/register test/**/*.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["@babel/preset-env"],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"c035e863a79dbdab22758e39d663ee4db0027617","_id":"preact-render-to-string@5.1.14","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xG/spHMnDX1cOOetZiFhljtczYUXqBrhuB+C2H+V0y3fJX8TmZtMrC+5di70y0E9fWAWiQIO5VTCpSDLoRmhzg==","shasum":"4b01a9354be6a7d09a66707393bcf68ce3f72714","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.14.tgz","fileCount":32,"unpackedSize":282665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRd81CRA9TVsSAnZWagAA8v8QAI4WwVd1fD0xOGjiBZbm\nxm37JCzN5OH4j+M7gNKzNROE6HPoCf37MVgnjwp6OozEG0gm0AW1NjtkC8Gj\n++K+xuzthHIf8b2zYfTlfMKi0eWBwC9U70HEvEDqo2D7WfM4IkRK2CDt7PEb\nv4dO94rEQ0Rje2Ga2jLV8OqMMwiXKYvqeKHXI8UiLRq0ZFiTLHTGnA7wQADy\nX5nG3TRUu/EUnWZI+daLJnE9X97kl/2bEi16cssf20nPMk+UGhbferX7SUxI\nq7y4zrlipScujyD2ozlUk1OARjlL3TJk5VE+2S2si/S5UDpuy9LVR/yh7sf2\nBbT09X46i9XoEp2zK0dTFKnOxF+muazkYOg9huT/MPxhgXI54xY4qPuuPnK8\nYWgWJWO0qXmuAkSlIW2S8bqKJQLllWWmZcYYXipqmnwT8U4inF6PxKFpPwHb\nDMXi4l4fKY9W7WuAth5qwBGRhatGzllhk7/IoydBstc9uyUY+HtJJ1MQlUxr\nF/ogOb7MQ9Qx7sd25XfzkFHx62cEmlYTpTx0tk8EXNazNGlCuHLdceQid4xk\n0Yxoqg0bpyJz4R0+vXU3D0W2a0rJ16qsawvm9WyIiEVF2jul/KHMt1XcDY6i\nbtmkSj3SRPp15acbdBROlInq55bPUPl15IPOrK5kU+CYxZ34Pw/9Fbn8uv9+\nPyS6\r\n=fNGv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCo/Am1944PtnP7OJD4FRVAw72fzYc9s5QzI3E/kzC6HQIhALSiQZT4V/EiWWLXJ2xX7cD0pDYhLSI9LBGL2BcSWlqC"}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.14_1615191861271_0.2325125310621492"},"_hasShrinkwrap":false},"5.1.15":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.15","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"node -r @babel/register benchmarks index.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha","test:mocha":"mocha -r @babel/register test/**/*.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["@babel/preset-env"],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"9a5e74818bc96caf134a8b250cc9af9ab9e1bc14","_id":"preact-render-to-string@5.1.15","_nodeVersion":"15.10.0","_npmVersion":"7.6.1","dist":{"integrity":"sha512-xjtHq/RQGUISoptT24qFiEUp+lJJ+QlxeO69i9nJShPWQm8RY5syqi8sycY68MhfV8oGBx/rRq8LQ8rPp2ESZA==","shasum":"9d1dadcd5d7b403015b11a5a1fdb4885c3649a30","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.15.tgz","fileCount":31,"unpackedSize":281995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSJ1rCRA9TVsSAnZWagAAuagP/1NP+8ys+I3BlPtOaf+u\nZDA6Hsb8cJKdgLXNn3yMjBisPTDGXWTr0aRqNEFP9Yh5xYiJ+oNNpzITvxso\nappdl9vdruolhggqOb6qlUo3dT9/t1T7FhKdiebAT6sEfN/q+Sk7oCoV4SMZ\nWElm9TZhEUIoOm76jTwyuj5vYVKah75bVwta7HJl+YUQ/xszdcOCanO4xb0u\n5+c192L+XDwaZnIxIFCVNKwp1UOwf5QBabJI/vQF7HNTqW+iIKUgy1Pqb7tr\neONGU2KV/0BaVF+yYF8eEM7FNzatHFMPsGQsDwDPucS8Rd+6IwUU6hB4Lria\nUG/OvL5QUDoi8HYfIpiWrD4dXzUNCQaMJxlRjg9jgtwwHZAyAIVaJgXXRlNW\nUR5qsgOLN+4AWqJvPWzYZgbgts/a4svKo6CFBM6Ixv0tAAF7kXNQwqIQR6il\nhUH5ndgyy9oVwu/3KWWyYI8QMv5EHn19k3+b+R8w7r/5c/0Qa6ciJ/3qLWmY\nS+q59WhcNLa0dR28XJhlNA+rE1Amgpxnmdc4N+4VB3pIGysKC+TLHbOnsDEy\npMHbkgBF8xx90HK0W2DCWlLGSM1uibl4R+mR9S5gaP9LtXpXfmG8gFw8sVqv\n1n8S8lk69hGtYp9CwrIJIUuB8i/1fwRuPT3fHHCUZc19N4DvT/Ow59/pvqtp\nzCQx\r\n=1+t3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID3HcXqzr5nd0RbEKXlBof8TRRza34oetGJEtLGExOrkAiEAvS/BBo6sae5z9hA9EGdy7aBE8PPMCEAnd17ze8fsUdo="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.15_1615371626754_0.41025866847543524"},"_hasShrinkwrap":false},"5.1.16":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.16","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"node -r @babel/register benchmarks index.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha","test:mocha":"mocha -r @babel/register test/**/*.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"presets":["@babel/preset-env"],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"2a6f332fe2d7e30ec0e5121bfa62bfb9ca728763","_id":"preact-render-to-string@5.1.16","_nodeVersion":"15.10.0","_npmVersion":"7.6.1","dist":{"integrity":"sha512-HvO3W29Sziz9r5FZGwl2e34XJKzyRLvjhouv3cpkCGszNPdnvkO8p4B6CBpe0MT/tzR+QVbmsAKLrMK222UXew==","shasum":"379db30e51916d45a67c00163ef812ad376aa721","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.16.tgz","fileCount":31,"unpackedSize":278544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSmkkCRA9TVsSAnZWagAACqIP/2aymHaEWOL2SkED4j19\nwHe/fhs+p0QRYUAsJrMgxi1lJNyuu4EX7X1eFILaPp+51TuC+xgPoy/4Lrfj\nlQunrjczvnZ1DJgNvEtW3XPriTulUk/TbZuV8XApJb9u7KztXBiTnQvPbq9C\nvvDFTKmkHmcEbh4k2f+llTGVD6AvdRoK5P+2vF+okuKnG39EeewGyWzz97y/\nKvEqxJMd79+2QsdbMtWN6Ja4S6NE+JS9QZXeHRWrlNP4ZfDegXUWylrewKni\nR0JGgv8yDiPDxoGyvyo+12EqrvamSp9ha9Pk8SJaItFTmZkjDgo20K8WSZrY\nQYDFLU22u+rVbV2VzK6LuCU6hg4xy355nO+hRlkrKRKiTIh33vzRgCD0yBHE\nLqo7zWojbyJw0MuK+qNpEHF2FKQ/GvWpGvCBddNpeg2fOcCQgHxB/BTWGXEK\n0sO0bOuBmiIDKlSCk5CI8h4IdsbuJ6mst27j30JJqfkMxuShPE2WbF5920Zb\nQttXuOrvwNr/WPQ6SNern/Y0ldIj+7jEMzWDhHezHaO+e0q+Pvu8thJZoESl\nThZDswW0deTKUDTIqy1nzGuyB5OKvs+UPPcGEYlqFJ7gSqRgwF+CRF7vDfuO\ndJhvQsJo+6GkUKoatZ1kaiRhR2HM9Lm2cfq+dttkst0jlyW9kyD0FbCGu1x9\nrkK8\r\n=pLao\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH151o+1eR/W0xkVkDJ5M6SgenN5frP/OKwDhxNE8QyiAiEA7dEnkhn8OVemYd4x8Fa4/G6xFNu/mokSvKVv+CzpEio="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.16_1615489316312_0.5556560371907111"},"_hasShrinkwrap":false},"5.1.17":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.17","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/*.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"74a851ffb48fece7536cde41fd3bc202cd63f415","_id":"preact-render-to-string@5.1.17","_nodeVersion":"15.12.0","_npmVersion":"7.6.3","dist":{"integrity":"sha512-njguygfbkOBSTG7O9L2pwXfLqmeBHCP6MKOUAus+tJNqBUbmYY1mOUK2MtkmIwjddBafafo48ylOFvXVQKushA==","shasum":"4ae85520928165cb725acba747017d1d1c77c636","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.17.tgz","fileCount":31,"unpackedSize":276259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYE39CRA9TVsSAnZWagAAfwwQAKQKQKf6CC4PM57Bjm/m\nHJl9SAcpYZMj4wQHw9wCLS1AKV1fX/14WA4Ll6QGXV/688wYeOVJZoVKpyK8\nRl+yt9TtSZbl5WLSa8mqrJdMgoCz359DMROUQbwuyhyigCGK14lC01xuqMES\nj3vxON7Q4FRYOKm/A3iVOlSjC+dNVJ0cPW3boL1uN1yUDUK4SpHjiPe8dsYF\nQLg7QJbWm/geRRSqwvVLLYxZL7yeVn0in8ZRXS4jweGegacqw8KY8VB5XABb\ne7li4se4gvN/jmLCKFk3j0bReFpgm0hExlZkeM6U+djDfy6ufOsRwR0EpDM5\nfzq9MwPfBi6eflil5LbaNbAulJ77eScVHPoBOjAn4Gg9bE3hb7H4VARi5hYL\na1AoXgo0kupfUlfnY8Fjavp73RUGFH3+qjStNpy9Hwgi6nAcuud2cuNuO2bw\nRp7cYTJvn/Hc+UUWYXhWyB/ylwzxmFsDEQl6ZkM6P3indl6FWhF78FwV3Ji/\nBOJlwEDnvI7GJumXPXMhAc3gzrFijN6jWA6bU1M3p1lMpxsOHSQAVEa7cHrB\ndFFLA7gTnHHIP8cL8avwDXhBCpak7ggOgFyu9ulhLrq9RjbRBPEsVEQflURm\nm7lfunWL4ezYoxu3GzdU1viga8gM65/CfiixzJtla2Zly99PjOXeVXB2jKqU\nMvIJ\r\n=BONO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1/3rLmpBifKVOAVrzuXxAUaU7xvGc170mceSXxVV3MAiEA3mBp2bsIBNWOYIPfqSceqSnblYqkCIwYadfp2wO+wV4="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.17_1616924156976_0.7972895702622527"},"_hasShrinkwrap":false},"5.1.18":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.18","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external none && microbundle dist/jsx.js -o dist/jsx.js -f cjs","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/*.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"1a3ebd793310ef53536722ec8c405f72c4f17194","_id":"preact-render-to-string@5.1.18","_nodeVersion":"15.12.0","_npmVersion":"7.6.3","dist":{"integrity":"sha512-jTL6iTZeheYOhb54r7KuyrNCf33lc+Z52Wos5P1z2wGZ/dREfhBVwrK1qGOrl4fboBN1KxC1lxhBchDHNZr8Uw==","shasum":"c57fe62642981db47e95edda2354873e6b799a1a","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.18.tgz","fileCount":31,"unpackedSize":276606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYmtzCRA9TVsSAnZWagAAnscP/Ryq3Gu06asSHv3vQM+Y\nB10rGtBg7et0Qsnj85QGOEvyPHeClzg1RyFWDdmDWHgkiDXtnqgQC3Vg0Md0\noli+Qg4mbAeSXQe1+N6G5zhMQa2XXrjwRv0vgbqW9pd2FWrmNmItw0Z3zX8N\nlEYn6NsqW1i/u1e3KkY8UYE0uiCrZlDr3I97eOv10pQUuxNIa7tXatKzS8lg\nUdAvGxROuH3o/Tb6A2hFW/KXkj/WeBQ4Y7zU3XvJH7CXqMH6GlOjRffKaPlC\ngW2xdQuXtfOHxe2jlt/U6n50ZjI6aIPleC4O1yyLMdV6dVQ8ZS/k6Bw3veik\nZsXC6s4Pcf8yd0t7EFRv7aFszMHV89CZtoThjCqXiSEOHSUAnjshhCVwnqVR\nFUr56OlkF4eJud3DT3AhpVunzutCLMX5dIym4hiIN00/bp8z2+Q3S+FJjX/F\nZXLHo3khAS8Hvcdm2BiVuchYCcm6PbyWsKXGGKOskq5Wc5eRpI/UrxpP/ZGE\nXsRpe9JVuDJPfhN2ysFKeI94FOwEqG8XYSzWVxqP+y92ZHtmMpH5e30RZAk/\nQHQXshQkFAI6ZyCsQxoPYVOCNZ5UMeEPv8UDwjFEM7E3nNwz69XDHbbg3plr\n1vXCLvICR1YEU7Jrio3u/ww8Rs0nYAwfzsUn/wtbuj5FiNl+e17IufuUkt2O\n8alm\r\n=M8oD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCeh7M2IkyZ6zoPBqBhI65nbaR3/FrllUwNEpj9qi81AIhANoGiSyFEjt4kn9dJ9aiuAoOFkYnyxqdm6umj6R2h+0m"}]},"_npmUser":{"name":"developit","email":"jason@developit.ca"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.18_1617062770757_0.5970383349923012"},"_hasShrinkwrap":false},"5.1.19":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.19","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/*.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"c9bd4bb9100f4bbaa76006bd42be024204cb4cf2","_id":"preact-render-to-string@5.1.19","_nodeVersion":"15.12.0","_npmVersion":"7.6.3","dist":{"integrity":"sha512-bj8sn/oytIKO6RtOGSS/1+5CrQyRSC99eLUnEVbqUa6MzJX5dYh7wu9bmT0d6lm/Vea21k9KhCQwvr2sYN3rrQ==","shasum":"ffae7c3bd1680be5ecf5991d41fe3023b3051e0e","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.19.tgz","fileCount":31,"unpackedSize":252646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaurtCRA9TVsSAnZWagAADVAP/2NDDVrjN7KnZJ9lasB7\nJct+y0YtWD3ljPLLdmaJBIQ1LOu9vFfj1ZQo7ckUnzRwsNzHYLiNK93d787Y\nYLqdz9G9kIovPukzbCTEHeTHQya1vrMrCqAfzXu2BYTtECHVrTgIvVJa/7S7\nraLoYu4CsnvgQWt/XT/2kyiiUzxQtxfY+d2zav5i9JulcD8KMG/eg4alE/+2\nCsB0sjPOiILTKVuJ8L+v1N4u4o8donSjnFYQ9Kvf3bqbF1rOCWWpAfpz1ysR\nNwbDn24jX6BBzeP4IhWIbL3UXchih3bijZYHaumGUgUPgNI20CcGJPrHYr92\nlMaLSZfIXPFEHm1Ceff8GopA/BZhAKnW3RpE0kY1EC0mCkKKx9vb22CKZSF4\n3I2LoWYKuA9s5ZB69hEBzu9H2efuWXqzzGZWBTt22sUe95J85S1RkuMEbuxT\ngRi+Daux0i5F2ZBRhT9unqAu5k0yh7jqYsbOEjrz8ZgS5J5M4rLbQFue6LSc\ntkvJRqwnVrOximM3omatbUx8u+uxVTzSlAZ9f0y93YfJ7vzmGZd1ZoaSLvzQ\n1jKC8FJ+JJbQFbiApqQu0rzAPmXs4hHxtpnO7OHrW0ctzhgxeSp4dUEhjCfk\nug2aKwLo0PAX08WdF8vrMZLOabl7N9T98PtCQzj23xoKvTZtKJmkTYIhEPOU\nORsH\r\n=fR+c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDAtSunCRkx2gDElAo4fDEmWDjgigRdEfz9e1Z45wMU0AiEA4IX8K9KmJDrYI4U2hP9bAPJ9D08aiM6gwqU3SpI9CR4="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.19_1617619692760_0.7190066335924823"},"_hasShrinkwrap":false},"6.0.0-experimental.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.0.0-experimental.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=11"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^11.0.0-experimental.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![Build status](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml/badge.svg)](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml)\n\nRender JSX and [Preact] components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n\n---\n\n\n### Render JSX/VDOM to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n\n### Render Preact Components to HTML\n\n```js\nimport render from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn { name };\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{ children }
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n\n---\n\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport render from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{ name }
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n\n---\n\n\n### License\n\n[MIT]\n\n\n[Preact]: https://github.com/developit/preact\n[MIT]: http://choosealicense.com/licenses/mit/\n","readmeFilename":"README.md","gitHead":"b5d8fff8bb9dac48573abb4f73d8984a82219956","_id":"preact-render-to-string@6.0.0-experimental.0","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-MV07FCJSoZNT6g7sGB1fagkQaro54DXEwbQJ9Qztq5YRPAw7kNi8VXWRMNufGHXVYBMK9WudY54K8/HXJXxySg==","shasum":"1eb2fbfacf4a72c3c107fbb56aa815bbfd59c940","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.0.0-experimental.0.tgz","fileCount":31,"unpackedSize":256660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEkPmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrH6A//dbtt5SiaEPaVRmy4Q2W2vC1/7p88iDWQbe690VtdizYxpeV0\r\nQcKwK4XBCQjEbnqIA3W8TA308oI/I2sHUsZWc1GwqizqPO/O+A7Tr178U03f\r\nzk3kXQi8XsJs4DrcYVtNrv12Fy5zs7PGQqyGYS8WNxUE+b/TQn2DTed/bRXQ\r\nW0uh6g6Qz9P2ONd1Fz95mVZ5mFqhisetOQiGjbKIlA4t0dUpTj0MPpamqj+r\r\n/6ko9I8ubuoZJOKahmTETBovNx1I415dz59ehRZkNlQsWKQ8czs/4t64/Qc0\r\nKNSTAVl8oWFQKH0m781eKDk8n07zjhNGxzwL0pwqJD/iATapuXOOdvv3k0G1\r\nsS4FEjFjJcjv5CJof9Z3WyXn+aj3RablpI0J8Ytt8eoKYTPOQRtiwRXfkgGE\r\nW9m7AJUaqxlWGt7XzQj5O2kDRxbs8n+BQ+QPH2xFLgCijeQ+MxVYO9L0cg+U\r\nspBDFU9/owoWL4bF2sdVu1h2XvCbZHtkPUQpMMoSh0n8h6HLqFFnkdjZunNc\r\n0HLHqPvS8E6/piqtApWl+2rM+KW2Af5/TKXhpqAcuQAvnrIupzda0z6K1CNM\r\n7Q4QBccGhmUllVKKn6qovxsBzi+zuakBrVBzAZdKxg2zQxsszib84GROI8AC\r\n8F8aqh2kLJMOdPrNVL3n+V4CVY42CDXkdkw=\r\n=W8OC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIsHGVCufvVMRWB8LS78azwtTIuAcon+m1l2kAl/zZOAiBn2mXGGTYSqWSFRtjt37CXejE+RdVw1UNENLZj2ejwzw=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.0.0-experimental.0_1645364198246_0.41300613404371367"},"_hasShrinkwrap":false},"5.1.20":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.20","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"936f71d60a67336bc2639de15dd1c323aa4ff669","_id":"preact-render-to-string@5.1.20","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-ivh2oOGzth0o7XqbatWUQ81WQGoJwSqDKP5z917SoqTWYCAr7dlBzMv3SAMTAu3Gr5g47BJwrvyO44H2Y10ubg==","shasum":"9e61a478e8514e5c4140282c7c43d9747a6d32a9","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.20.tgz","fileCount":31,"unpackedSize":253587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE5YuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZ3Q/9EAMSg8mhKl78MsSvPmtqHac4E8Rt+u5+ipoScPAnYTUSonCa\r\nWJnm5MGxmSiFK52uuUtGDmJ0HHpZRW1uh+CnswWqEeTK3r7S6ROXh2CfLpGa\r\nYLohSJJWPK35npVBqvusggh3Qzjos/+ZWLMhc+u2ffbJ+tpECG4waom9qNqR\r\nICDzyInQbqEyrIDOaprCbUe+3OW6v8SmRQKsj9LYtI7K/+aemzSVSy9B4QKU\r\nnalbPAH3cqERcMkgmjn2SLBTHLVEskmRbXBInGDxw23HHicsxse57I2uebCE\r\nKOA/rdUagpFgNr1s9io9g7HGZ/ja+pR2UCi4Fu2bg9ZTOor3MGIxf1uKWnV+\r\nnbSE46+WZtebHxLQPfSVO5WOlHhLAYtqfMZnhIhlc+2d5QaN5WfZtc19dqCn\r\n6uegFL57KxkS7QkN2p5sXTgneiyRzz2O1dhpBoDo7py6bGpphEYRhSPr/X0K\r\n9qBs8zkjHyo0AdHrPFz+Hk6IurvO8/J5HjrHQxCxhcv7+xBspqUkHrANn7hs\r\nTJqxKN7Wl+OCLaBojF0KnHY0kezvV+492I54+E8O/FbwIZN6u2Ro5dBbkqtq\r\nIprCHA8dfITpCHP8NnZMdZg6kN6Jc5Ym5kZgPYLpFY4Z8vwfdakIWL9+zGsg\r\nbUVQe2gAxzq3Ekskb6kK9ajmxBjsaeMa2zU=\r\n=Okbu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDETCw5QVIvLI5Oc+dtMYFVag6avYyd1w/1RkFzpRhYEwIgXSTBGPz5gqWDo2TQUWZpCruHq9NIR2uD3knnXzfnVx8="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.20_1645450798022_0.4303015005590567"},"_hasShrinkwrap":false},"5.1.21":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.1.21","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"c1eb8c41666d58c29f33a0ae315838ea9130ce89","_id":"preact-render-to-string@5.1.21","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-wbMtNU4JpfvbE04iCe7BZ1yLYN8i6NRrq+NhR0fUINjPXGu3ZIc4GM5ScOiwdIP1sPXv9SVETuud/tmQGMvdNQ==","shasum":"7329a59191d2ca7a40635828c7058f64ffe17639","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.1.21.tgz","fileCount":31,"unpackedSize":255417,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDND5AqiRxAolrJ0iUlqLZ8CIjK+Vyf3oGUEpSvlDE2DwIgYGhZWHU+l+rNr94XurwQlwJzryOKP6/2lGfZVWC6wsU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiT+8AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmomUA//Qzhug95UqxxQhjQ4SzuymhHAemwRKKozd6fAcyLOMZR1/PM6\r\nUhWPXBZ86HZkcX7AwRQio3fSqrug/2cOlOyXEA4OLoH+UuV25pexnbIe1HBm\r\n98W/VPEmkYrjcS1RxNtfLqlAt/w+QNXHHXp6eczTUDXLLntCEbdErgL9TgVT\r\nSa5TpuFZZfSwZDZf7LAooeMVCSbJXfYJ2sZR/cvH9zxlgyHG+DkHAeF643Jq\r\neuCtCH9Ra3wld32CJq+Ena4mJlsjdnxKOe5rtqlvWZRLgWi95Mwu/o4796la\r\neCM3LApkVIOpLOq9o0JhybOddrxtt1ALLkKEs2vEljzKl/VnVSOMRRna8424\r\nCWm/re/NHoQXC7lA+IIToK00nZfhgn/yH9QC94BZDSjowhoZdDtxTUTiycft\r\nVK2k8nRBjsJu05/YmVY45fod+NORPVlZbTjfiaqEASXKoVytVDmNfRteoWfc\r\nrgYM5jQvRuOqcSZfO+IHOLr8pTh+XCgg5KdaloqRl/YSzJSsS1ndrhXKzj9p\r\n9nJ+ydd/VGPPhRrwoGAAoM7yVJydgmfMp0I5oYspvzQ8z6OqfBJgcx2myP7I\r\n37C2NOoLagUN7jb1ibv2ZxuD93rahXjMjqZ/ZzhfYugkFto0UZIwTalVmk58\r\nRAa/5uPnkCbc8TgkWbTzKD3p0qU9u4JS2SY=\r\n=dHTs\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.1.21_1649405696267_0.966178565171063"},"_hasShrinkwrap":false},"5.2.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"99925a0c11eb8edaceea2dc15f899608edafb853","_id":"preact-render-to-string@5.2.0","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-+RGwSW78Cl+NsZRUbFW1MGB++didsfqRk+IyRVTaqy+3OjtpKK/6HgBtfszUX0YXMfo41k2iaQSseAHGKEwrbg==","shasum":"3d3c4f9c570229b76d33353ed02ce662bd13dec1","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.0.tgz","fileCount":31,"unpackedSize":260904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwTfOL5XmgUHdmXPRJdDWVObDxluspaJAozqQuQ6N7fAIhAN9gKvnl7AomBq9u+ha1L15Orixy63KY8DgU2olxZZBL"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJia5xMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp0ww/8DZr4VKc1ae5pNm33xXr40kDsBWK58byGzVJ0IIUKwrfkV+ms\r\nXuKngH2RK3gtRr1pg5d0jZI2veWCPXTTEbm2jQjfSth1404ARxaPrOQVGZ5t\r\n1zWYUxaMpLTOJ0wKjeKRP8/OA/gqKCRRJBbJp1Dqyhl2qBM9YZcn/v9bHcU5\r\nHLl1LTgwJgPlzWFHRmm4Zn0PU28GRd6oWX/dGQ/maZeuYWAs0VJSIfOgqpDK\r\nYeaCqnXS1XcAlG7f7XZSX17NJTL6jolDssAvA51q0mS743+jVY9FCsSAv6tu\r\nfy9JJPKTL0KD6/fvxNx0/FpBsEBZDossdwTy57Dj/0BEHIpsPqQgTax4nY9V\r\nZbLe4j3EJ8c791mdy7SRI54KkeaaaeyHte/T71OnsbUOTOmmbP4njoJnPqXb\r\nW1t4BPrPdIjCG4b3jr8IJ9j64ZjBxcNIYFUkA4cxb0SZRuQshOscmAo+NJz4\r\nurhpfCq355XVZSySBiyHTyzH/s8ZJ6qz50HwHZN9VxFTgyaTZ3no4Cq8ZtkV\r\nvy7uYRBCc8coPU/NdXuzrb7t53AB65hybPC1ZHLzo0MM1lRnhf+p99moM7QZ\r\nF4TFbzudrc4dujlODwz05ftrq45hz+afJ/CemEtxwqAeVi+vEtF9O8UOEz+w\r\nvxXDpFa7dTalD7WKJc+3ozb5Zbiw3+W4GMo=\r\n=Rkle\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.0_1651219531819_0.17887241923623143"},"_hasShrinkwrap":false},"5.2.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","exports":{".":{"import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json","./":"./"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","typings":"src/index.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"13b68cfc4600b809bf2dcbcea96e3b11ce59ff9d","_id":"preact-render-to-string@5.2.1","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-Wp3ner1aIVBpKg02C4AoLdBiw4kNaiFSYHr4wUF+fR7FWKAQzNri+iPfPp31sEhAtBfWoJrSxiEFzd5wp5zCgQ==","shasum":"71f3e8cda65f33dbc8ad8d904ff58e3f532e59f3","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.1.tgz","fileCount":31,"unpackedSize":262966,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB4OaFHj79opVK0QMkIQE7rP5XPc+AkM9yocO5v6QlTSAiAp2kfidvp+BlDuXuvntSHu3yprLo2Gqq6shNUyHxZZbg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizdcqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrLzBAAnKGn9w+0mNpSBWXNTqG2wgnIfQpclKxewkB3IIrPj/TOpJUb\r\nx+hJVutqqsKHTL81QBB7ODnyfJcT0grKZnttN7P9K32PfrXRaplIdLe6PISE\r\n/KfsMgnztxY4W23vUpIDI6q58uL8Sghf80KMHuldhyK17gFZ6GzB8SnSEMoC\r\nHsmAg37tMoJ9xrTLn1FsW28EqBFu1CtThBUnWJo4W8cNFcQ8FRGdyuh5FArG\r\nhbdZgkv3qw8KHhWURtFpGP8eXagsTLnMeOhwOyAQ/QUsaW0qe4FN2qfvQk3y\r\nrbLRDm5eSHhi6Xm5+s+4Sww7wAbRP2z9jESAT3Iq+wVX9AK/LQYgJg5TQstx\r\n3w0qJK059Hk9h0dXlo9/SvNqpmymm6IEiyqg+MG68mxEer7pW8jywsoMRsc1\r\nE+MNOptpH7HPFM+9t7JBxmgpqGOr8D+kvxDKvP2U9Fm1OEWL4n/1pBL2sEZ/\r\nhV2Da70GA/b7ACQuzPwHhYvbzt+fPQ2dJMXFz43kSt7DzF2VamYQamvhrWpx\r\n+8v9yK2XmV4lca9Vc0q2K10ehQQW2FWGsSrV5Ad1QspA3884Jx5I1ntn+/4P\r\nn/CXOW1ml4Mdhr0NQHvfPxZRMoVn8Wo4BVG+t3m6GKCqN6u5wxWzLerf5oCM\r\nDIptIU9Dvx+Y2l483bsK0zgE+DxPkQkheFc=\r\n=76gU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.1_1657657130501_0.2390131702852969"},"_hasShrinkwrap":false},"5.2.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"43689d38933f790a36542bed191f5ce27a284bb0","_id":"preact-render-to-string@5.2.2","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-ZBPfzWmHjasQIzysj72VYJ6oa2bphpxNvzLRdRj/XGFKyeTBJIDmoiKJlBGfxzU4TYL2CjpAWmcFIXcV+HQEBg==","shasum":"865174418f2e4e8e37fc40f1a20c5a23dfdc0971","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.2.tgz","fileCount":31,"unpackedSize":357370,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6PGAOJb14XQNBedgReL8xUSW26eLMDKdZ38ViXTv4rQIhALpQqZg7FhRgSFmzxichTLXGXHgxoN70PKCzGHmkyGfn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+/jkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoong/+NAs06abi0lNyolL4mHJ5HkXGIFUisHMhPv3apcr1T++SKRaf\r\neTMrCYe0gBSVjT9YdPfBHk4yZFKPQq2dTkXnkT52cMjPmIWTG7bZx1PMzD1J\r\nBPpzdMyjZOlG5jx+J15Shni3RaRa0JN+aR1CyTiaQhtCK2/It/+4qwXIhRj0\r\nsitmS7W7XokkghIC55/42wlkeICziFHhSYwDpvz+k+oYMKn0uFhss5fGNAkK\r\no7hFKQzNyI32HEITFFKL4zNIEEE7kIgTfOEbLd/JaQBz/mHOxBqJ85XwanPj\r\n9k6FOhfkAUptJkQyaS39Hx1cdIsg1T5njnSndJyWKan2xOXKJXiFfI/9AP9w\r\n4q3Gu9fTUd1ZJGdX++TtZOf6lRKnqYN5727qnQwdPLAgrq5JkU/qEpJ0jOBn\r\nKXPdASP5qmjtXuHWPxy43ABP0yLg7IQQjG4b0iMszu1mJPOH4MdPETjOuf8N\r\nGRfiRxgBcPKktEsT4Okz6bFX+k/Jil2u7Noz797FpdKCqlMIcGKapWJgOibP\r\nLPLNLmDVYmAtTRmX5QCgJ5FG8aG+GOBRwGq2pGKdMSK2W6jnx2lv49jBPdLv\r\nkXc4/ean24P9CGmymAnt3juIPEKTQdPetTTtPpTC/FqwWqh2EnbEAcSxwmdM\r\neZZOIhFy+uBT9wqxM63zvt0LA1W8ojJeZxY=\r\n=/C3m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.2_1660680419800_0.8874039652156072"},"_hasShrinkwrap":false},"5.2.3":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"mangle":{"compress":{"reduce_funcs":false}},"gitHead":"2d0cd1decb7e24fdf6facc0d169c7f893e1827eb","_id":"preact-render-to-string@5.2.3","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==","shasum":"23d17376182af720b1060d5a4099843c7fe92fe4","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.3.tgz","fileCount":33,"unpackedSize":358613,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0U5usNx5XyQEnEQpG3K8RhNzVNJpgtGF+SHbdVFToPAIgMNF/dFPLQtzIb8uqqzgRDCSEG3H2ffmghr12WAfT4SE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjF7oVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrwvQ/+KsSc300mTbg+rxl+roSSVoM7GXfeZg06OFifEzatTB3HPYKW\r\nbD1OgOVlPTfp0/iDNnDpCYKDLY3YO0IIXk+1KACp8Z9jmsnujJdebTnSnYjC\r\nOmmL5OgpaSu2+ay3+QU2RiodL1jlaE4thddHFWauf3t7/32D7JoSDicMA/ce\r\nYrnrzK+aK/GpuYw6C+2dFXLWuZhqZRNyjenF20QZ09Q7yk+Uv1/RtZq5VG+o\r\nHohOZyO/dyyoEZ3XR6SgReLvGQVp7FhUkBw1KayOqjBbBlEZPKKzS5Mw+Ese\r\nyhGyGE7x8sKTR5AeO32ZCLiCSLrsgTXXg5sFmKV7BOsRNBbGpssJUVefmskG\r\nqUSa7Ky8OFJSzpx7BZto0rZvEUjGK56P2Kb+Whro1jk5ptOtYu5rVbHiPeMp\r\nH6/DpV+5AXzeMuRHu4bb4LmzAcamFlGF1U6dMVBQnyTASzv7jJhasWecZzss\r\nn7ZmIj2Xccq3BxrvWS4KO/xzeNt3LpCWPX5l0hyHdxZI4dLy0lrgp5c29mO7\r\nyXfFmtgbN4heHf2gMd6BjHl2qrTCe5R4zfoSKEuRdtGmUgRBVLurL69fVUgg\r\nHJd4+vixjLbmPaYcDXKKBHXOBdRLydluvOOblw5dlAGWiwEHho0AzegDVtgs\r\nt5Julw5ZgdsqjaaUVywRZNsSxzGSsKzEn1w=\r\n=Z4/H\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.3_1662499349397_0.7006311306214803"},"_hasShrinkwrap":false},"5.2.4":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.4","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.5.7","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"mangle":{"compress":{"reduce_funcs":false}},"gitHead":"60075a5a7389d638d535c85f3706739e9ba932bc","_id":"preact-render-to-string@5.2.4","_nodeVersion":"16.13.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-iIPHb3BXUQ3Za6KNhkjN/waq11Oh+QWWtAgN3id3LrL+cszH3DYh8TxJPNQ6Aogsbu4JsqdJLBZltwPFpG6N6w==","shasum":"7d6a3f76e13fa9df8e81ccdef2f2b02489e5a3fd","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.4.tgz","fileCount":33,"unpackedSize":375314,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDy7ajI/8pGmXCSyE3y1Vus7g1XufHmo4fHPdd1w96CQQIhAMZj+QxcbpH88RTgrwjpn3SZqsK3PCApv+3XZ8fM1SBU"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHObSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrwAQ/8CdMloOw1z02DMDHSQEcfmI3payzCCTk+1mBukMu5xIJvhZ3Q\r\n1+QaI0EGIx90d9XzCRlkqghSmy4A0qlYB8w/KTwG/oeeOioHAWsqM+mxl5N7\r\nvtbTFRdVVZHc0xVQ2I6x7gUhcCA3N1gQlmmAApcRYusH2i4tER4u4vl6qUr4\r\n+X3A33oc9qfBFblcaDeuxGnltlfNogm2sN0lEkQec3AyBOV+/OGpD1ZoiGjK\r\n0a/8HfwSDxR/W6vnXuZDyztp20oIfNWfJA80X09sE11+CN6JD8okdscFIF2y\r\n+hU/sfWDcc+JVvR9BpSfjzBOCglF/K7vlJCt2VDR698gvxRAXpbQhjzVuIho\r\nlw9cM7nlvsify+aEa7KaawftuLKq8UXWI0+J/iHRG0QtF9MnJU6lRukRHoVX\r\nt9k793pN4Ua2pydes+Id/JduQW676PAs6YREBphNamvZpOR96G8qCyclaUlI\r\nutvsRWM49hJj5NISX3METk3T95BnLVn++tiTLzHyoaqF1JlxCfoP1NTKDCfk\r\nG508DLQ7n6PoH6s5IBdUGgKsrv/+uCTnCnz470uObFk6NPCjqxtmxzJ9vfk/\r\nP8f+Nk4SaqJdvJZ6ur4qhXi5Xl8TtbmS+0kOsNUfl5GTGCYQZhVozxBWneCa\r\nss1Pemd4G+cF/W/glG4K397iUgRsbtV97fE=\r\n=P48j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.4_1662838482496_0.25384632073230495"},"_hasShrinkwrap":false},"5.2.5":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.5","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat]*.test.js && npm run test:mocha:compat","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.11.1","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"mangle":{"compress":{"reduce_funcs":false}},"gitHead":"359a58e8f1f6c501f7087710335d2addba818d90","_id":"preact-render-to-string@5.2.5","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-rEBn42C3Wh+AjPxXUbDkb6xw0cTJQgxdYlp6ytUR1uBZF647Wn6ykkopMeQlRl7ggX+qnYYjZ4Hs1abZENl7ww==","shasum":"359b14a45bea2a7b5c0ed2a9c6eb7ea915cf7d5a","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.5.tgz","fileCount":33,"unpackedSize":371073,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDToZNJsfwcwPfVz1ML2G0ISkFtRYWkLxuxArEX/NLv7gIgD8IEdIIKCN5RK2RsCITmmu+/BaUkMjAMr2L2FKz9slo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPynqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoV8A/9Eb5ToEr537zf/spGjYKZoLp4LCzEqz4JFBZ69Ljx/auJ+uDR\r\nurHjhJkqvwmYonA3mxDqjB/6lQ8FXa79GZDoFK63dSNL0bX7qcat8JlAmoP3\r\nj479Ne4AGI8NWiRszbEMGni9t3+M2G/AfAIsEN0PCWcWkDrSesFKoLUbUyMS\r\n4pOSwG15HdAPzZD33C9l0Phe8cnV+6qGslpViiQQeNN+UtlQ9u0lEaxSrEIU\r\nw6kqSb0Mk6oW1D9H4/WKetIr1w54pvBI/9hrmbbxj6Sv9NWCt3jzXuMcjYeR\r\ntBCnN5z70NL/+ymh6cofwdJbs2AftRAE8ZIvhsXjTiNadeaMzLKW7Q3ne9ra\r\nR7s+AZdGaKapRJvQu3Y7ZTXt3Sp8QsWNThUr55RhFV6mjmLuW1ZbIS6OK/34\r\ndxpspTmfrQRZeHWz0R9UUXWfj0lMNBb+kqAk/L65siJz7ONCFvZ9msGhTtVL\r\nYpF2IyAMvQyh2ZwpF+ZfiVFtKXSBPTcGI3aez0pBBOoIwtxZRIaTRlh9VZpV\r\nHvVGZ1Xk8AfcCrde7k2+iD/ySL4970BGT3mH9ehGM/iUN84mcMdQ46BDyAf7\r\nACOXuvRV6CbU9yDn1aGuhCNslzry5ltvMz8wkGYu2IcZmRcrqWZ1WjXiZJf4\r\nhc7flnC75N2r3ZKwMuBeVdO0+iQUpqwDU4k=\r\n=I0lE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.5_1665083882345_0.5509972528849694"},"_hasShrinkwrap":false},"5.2.6":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"5.2.6","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","import":"./dist/index.mjs","browser":"./dist/index.module.js","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","import":"./dist/jsx.mjs","browser":"./dist/jsx.module.js","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.js && v8 --module benchmarks/.v8.modern.js","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/**/[!compat][!debug]*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/compat.test.js 'test/compat-*.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/debug.test.js 'test/debug-*.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/cli":"^2.18.0","@changesets/changelog-github":"^0.4.1","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.13.0","mocha":"^8.2.1","preact":"^10.11.1","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^4.1.3"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"mangle":{"compress":{"reduce_funcs":false}},"gitHead":"2dbc28fe25d613976630b0cb64b0c1e4ac69a3e3","_id":"preact-render-to-string@5.2.6","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==","shasum":"0ff0c86cd118d30affb825193f18e92bd59d0604","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-5.2.6.tgz","fileCount":33,"unpackedSize":380306,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOqus2dnYWSoeCUxxDeVYYTQix4WP1oUsCPMTFWZ69lAIgVypxTPX89MgzXAYr+LsUZldpY1hgg+c2nSamNqAa5dg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjVWHuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqYqA//Xm6//23IHRJET3yuyzcwK5AhIZ4nH0lrRrkdu/wZF9V97pdJ\r\nvNSd5lxym+FF/ESgIBX2YECnlmAIfpDZMrOmquct5ZK9kMGfps+QqbBMpfyW\r\niy2TPK819BVX+p154or6E42S6yDRCayLpPfXYVBZSW0+UHCI8uFkhOtiAUWi\r\ntdjr0zdKg9LbxJtbwqwHvnniYpJjkKZtnszo2Q2LWZp8s1h7e07MBnwL4tyf\r\nYeBM29iuvuY8k64qqrR54gGOZn5ehliQHA4iOv5vTYnpN4FK5HPAUKXJjWqn\r\nqnSL/MJLP+iYkIefqOS/rrmcsNdqaa+cugarNsAQ0KOKM4v3iC5lfTAY9jU9\r\nd6ck0bRf3Cg1IyDt93kgiiCcLrEhWBa3pziK88U89oBmU3aBR20tgmgJ8HKF\r\nn/1qjvdGh1c29c6hGwGO4LrZsayFaUqFXxVgCgXDmaTkD09BIcpcPSbmtIGB\r\nqNG/EZH51n4wTr24anNfCUqxALEjNRhvQMhPc1MlLX1lrLwMbBgbZzJOJiT5\r\nuXe+yc668NFKzTex9imWAcxSCAY9NsbDfBn40iiAXfHCdfzbsht7lDd1QgsR\r\nwain5mnJs49zrl/lYiveO68sZI8YYL1qhVQWYxiuzxbhyHaeLBEnv20gKW1L\r\nWHwCuG6l4HxmoKS9aoBzVG/KjxJfpgxHmK8=\r\n=FIBj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"jviide","email":"jviide@iki.fi"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_5.2.6_1666540014517_0.8406006287395256"},"_hasShrinkwrap":false},"6.0.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.0.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"2484cd4a975eafd3af95da6031aa0c85b58ceba5","_id":"preact-render-to-string@6.0.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-ROmdw0igiAlXW+XtLBBLkesI55dpBwo7i+LIRBEJDK4AyQv7rKaFZKb3SZ3YfurRH3wPb47xYvf+NMzlPdJ5mA==","shasum":"18f75530099f323b56098b8b8e25643a394fd4f2","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.0.0.tgz","fileCount":37,"unpackedSize":355731,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6SofN8o/9KcKgQOgF9aGxLjMLF8KYlq+IK/zlxFdhKAiEAjVqKlwKx0XGvx3vEUixpbWstZ80Edx4GVn9ZwXP+ypE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIT6BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqm7hAAibswxSKryriu+M7sBRj7I7mw/T8bMuv95lShAXxwsYyF+Lgg\r\n37kNs23UC/yNMjjaBfdLFVzt0K79ccUW14YXw7u+dP6OjvdCevet0zO9F3x/\r\ng7fjonffK5gBaE0sUdRddavRmdLXrq8KqwEhugtELqBd/e3wMLwol+KeaLur\r\nbYCCmSrCKHiniClIaFac1bBpq6Vjm1uLNe8MtG5u881ga1BwwzR+zE8bgIRc\r\nCiIuKOHBAFmc5lEoLYHgFx6rBcqd5GdRxrFhwXwBkRlwfp+BwsbRrvyKy1nS\r\nM6k5h8mRc94XAl4vU/4LvECjpbH9F+g8m+Nm3FIDJrLAzBsZOXIFXQNu+Xlz\r\nqj0TCinTTmFzxc+VTaED8wOhAkG+RgeBR+yikpG4QoCzRGU4CbYCV7KLqKlC\r\nybCieE5D0GuarUSbsL6N94OQx8EBDOpZUwAYpXUrv/TvRH5IIQYkzFrgsZ7q\r\nniCt6zx8GysI5lbXy5rR0OHYHoFrDShfeh6q74XZn6j86ETBUq86CStIin9e\r\nyK3/L+rfYLL6f6BqVrFafrw7vF+KFBSwemddp6UowbkxT5yquAhgJJqeaaS+\r\nV0qTNYshD+u0AHg8PxzK5Itzfw9RMxlcMv8vytpMYReJKg5+re02GoTOrtJ9\r\nYt1PC5940p8nbrOIbNU1r4aebUVgHvZfkdE=\r\n=OlbJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.0.0_1679900288834_0.22463317544315808"},"_hasShrinkwrap":false},"6.0.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.0.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"2e1c08cc3856310cfaffee1563e7a3e0ef8013d3","_id":"preact-render-to-string@6.0.1","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-G/dkCl1x6qSNoah1EZAf/0Q7Fmqiz44mZbFyyvL1ZYXYrMbOBY28NWO6kCLKSrqZSsvNz6IcMa01EmI+o191RA==","shasum":"1f25bb728dceb6a3579ce9d8e3da72aa898088cc","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.0.1.tgz","fileCount":37,"unpackedSize":381214,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFthgMtnZxnZMz02k2FHbfWFlrxoZn5yfge08HKUtkfgIgSDtkhhl/116Mb6fqFk7DkFj/TzjfLx8nyeCE3Md51PM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIsCPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoyWw/8CL9DZAEVHIlL9r2LIxFvD4jfr5ffrw5n7tr/6RutE9yMUFju\r\n+Y63maeQCtDsCz3UiZ4DOdFjaKG7/xxHoVcYJfpHjGEPdLxwJOg6u9DRLqXf\r\nBJLi10JmXIIBxfiUK960XHTXrS5KlNCWru8WgO7n/S5trxNQyb0oKs6uGDzv\r\nmrgEJ7YA7P1+3AYSqX/F0ZUOduU8wqQSR6s2ON3LeF/LOPQrAD++0p/xplJv\r\nmj6NBLUbTQHBOZVC75ZewV3ZiN1N2g61Y88vYtyEKQFOw7Wyx++RoVrzanwq\r\nn1EnEOcPO6R/0xfBTDV4rHYf/VZB5Pm5s58z15dE+OfzeUqmvJ+TWqL73cmZ\r\ni5wcWLdHEmz3GcgR2IIkxwzspII9qbygKFwIicOSPsk6lN0aXN19S+kobNe9\r\nqeCEVXoqpJ+GaAjXJxXCiNqiaH+FH7o4kwmSyfhlyfE16Dfxttf2OIZk7EHy\r\nqjKjZk1jfv7TUEbju2L//kiFtW8fUYeJ+i0xGq1JCw22GWxE7DOe10/UhBgH\r\n1hZbnKA8Vn/Z6y5S7x4BfAifsSdQfeDIi/zy0Qvg57gBy2ipWtM1l9l3uAQf\r\nigQM92/59nUdp9LRqVB1PVRjCzvv/2Vh9CC0itSw42z3LkvjmWXS0GJHNksl\r\n9FY3I/3wr1PSZKi2e0JMIF/BvAX3ztYhbag=\r\n=d5Co\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.0.1_1679999119562_0.67529308141194"},"_hasShrinkwrap":false},"6.0.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.0.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"a9817ff0f177d58f5c8401bd3fce9d9c948a8eec","_id":"preact-render-to-string@6.0.2","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-/dls6xmcFc8PvnCVke5Hu5ll70pZZu+jZuvw3i/ya2CNu6B0ev9F937+oFyzdlNKVp68III89oYMbE6dcmuyRA==","shasum":"79fa4840757cd91ab9e8a119429609552e2057f9","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.0.2.tgz","fileCount":38,"unpackedSize":405695,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEeEH1/UsqwachML4/r/7qrfEnYtYUr1T2T2cpV1MCTDAiEAqxxo0A4WoDTP8uZIGIuVKhLVw7Exz53U8xvHX7fUl88="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJCVoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqN0w//cU2JZSl/69hhZEvsYmuXf6QiwJBZiiuGHjD1j77+mHe73rV0\r\ncW+zo794W8WaSC/SZKf8Fadib1rw5M+OQkxEHbVgsB+e2XwbbXydeeF1Yvqk\r\nZGErwIPx6k7ZRKDD6IMQ7EfBZsLUIuZqjUoDgRPaFekR3b/FENCjMUbTtlNt\r\ncV16Kep2clrjolvmgLx7fSxChADCvrt5g8m+aCTwWwxUrTtKcH7z2SbRw7wj\r\nMj8qPsqMMf4D9qJ2giShjmgSyKM7aEsnqPNP9z42pcgI7aLkXQ97V0ZzsW0f\r\nwJr6beELQWeXxlI+m5WSVL8KwyCepdedOrGKbuTqdXwHpedND98ev5h/fwTQ\r\nxHW2YfLrLjqKTJZbjkb80jPXBivhskRvNk22zB50m1MYLFTd9pqPaEfUMhAA\r\ng/p8yegZrTPQ/bRNgd4fxud3bRujoyqonTk9ScSwUIaJzUsMDQnJuFu/nilJ\r\nw/G9mZca4Gy41D8wOv4NCgiV44OqGaai7x6vbDQh+qtRM11AyDisaPxB16Og\r\nDndL1eQNNGBEusRbj3dx00ectNAppFRrOtoLmuelOjirBQK4gJlVvlORzo+e\r\nPf8TvAVVZfSWUQwrWgJmkxEAvMc2vO5eAqq9kFu8icdW+pslF/gE0uR0+epk\r\n8+c7c8HLn1MbUnkwfaCcGYGfpxKkaKBTTrI=\r\n=FQcJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.0.2_1680090472084_0.5432064131542036"},"_hasShrinkwrap":false},"6.0.3":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.0.3","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"bf9575539f97427200a685fe61c31606464e4290","_id":"preact-render-to-string@6.0.3","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-UUP+EtmLw5ns0fT9C7+CTdLawm1wLmlrZ6WKzJ4Jwhb4EBu4vy5ufIZKlrfvWNnPl1JFoJzZwzfKs97H4N0Vug==","shasum":"ee4d8e6fd386489af3f2360c454fe28ec3210ff0","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.0.3.tgz","fileCount":40,"unpackedSize":426484,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFq+ay58RzcfABOsfoZD4drd86U/HpMUZSEKxI8gkFtuAiBT/FwralUNm3z8x2f9LaUpweAQN/PiwLHBCVdLXatciQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkT/QlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdvQ//azJpgfAb5aJxo1joTQbzJTPezpLvt7PUWrgVUPSGkcJj1ibV\r\nGu7Al7XwsI+KoJzWnfTaCFmSE2ALD/ifmRCtvhugDPoaCdBaCKfyOibqjKEV\r\nY4PhE07NZMwWXlBBWZWJJlX5yJ9HGeR9e+VcP5m3kdxg/JVpphCeuMTQJrOv\r\nUhJQLZ37jqpVScmxDZFj2Ju0JWguAzAtPtrUfqf1YV00YOpZMQlCMlwfg5or\r\nxV3BsZVy7spurGgkDgxF3sf6RqF49JVvnCA9yhCL5p7F/sDmrydLQ8cgd1nZ\r\noNlEq8J6HUeiYm8MtVHcxDXQrGB0O4buxyThO/6a3eifZM3/JEvXLtk8QJFf\r\nxiXMhYz6QEmerdUyv50T96vuiz4W26eK5GdqvROP7aRo9uP47ubBBiXaJUox\r\nwKju82pqGz8QnD5gGGVm0C+lE6VQ4UzPM+NFUz4NMLGN9sSMDIsDdo0sb+/b\r\n7epAePU/hnMxnOw88Lk9j7i+o2sOkHy/t7J4k7cRzA4hmVm4LcybWn+vtSoy\r\nvi2OFRKbY+NdUUiFQWrlSGXcRiQ8FYoLqS2WRSZGXiHkdfIcl5jWa9Ha9wiJ\r\nwyuwK/0z6+7XrWJOQL/BDbI4vT3zTeAL5AiEn1dmnWg7wbka5OncNzOeeKf/\r\noQRC8jUzt2PVLSBS+1uNPqUuhG/Lf90Rm2I=\r\n=mmkb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.0.3_1682961444767_0.4715686904428935"},"_hasShrinkwrap":false},"6.1.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.1.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"cbe881a1f603a1b3cfb498306439ed9e389c5d5a","_id":"preact-render-to-string@6.1.0","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-/AsKU4Q4R8r4aKwwNQrkQQNUVEDmTeZr6IwesDffobFRPcTk4dSQrfo1VOcXjtlcUss6QYEe7JShUGbQIhaw+A==","shasum":"6e3c70dbb9662962b626836566b091c53b6d19ae","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.1.0.tgz","fileCount":40,"unpackedSize":428522,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBbRmNvrZvLq/S0cFROIRqbHwS2ReeyXdcqbLfXO4PuwIhAM9tVm2acwkbV+0HlO/ejgcB+1b9SwwiUIecR9TKDooK"}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.1.0_1686296775445_0.96896723900164"},"_hasShrinkwrap":false},"6.2.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.2.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"e02629e2f3a8ea087a0c75789080269169037c80","_id":"preact-render-to-string@6.2.0","_nodeVersion":"20.2.0","_npmVersion":"9.6.6","dist":{"integrity":"sha512-51HDkgWGssQvWhAXE6xWGSFgqXx+qzQPKatLBVm5Uxl2Bq8RHz+CcNMTWz3kjGNM8PL+9GZZfTLGHyR1wu6ZuA==","shasum":"88e3e1fa4b9b8a3ada2ff66c7f4389d687e51c96","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.2.0.tgz","fileCount":37,"unpackedSize":366088,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYggGVmGuwmdT0rshtha9uYLPu/L1yYebGNL/NkKuzmAIhAJIIA8YO5TwKUUdsxZq+B9DkFmiaoKTkurT/EH6M6qUd"}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.2.0_1688980383939_0.25383912583788937"},"_hasShrinkwrap":false},"6.2.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.2.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"bd818dcdeb521f75d316546d102e1f0998405929","_id":"preact-render-to-string@6.2.1","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-5t7nFeMUextd53igL3GAakAAMaUD+dVWDHaRYaeh1tbPIjQIBtgJnMw6vf8VS/lviV0ggFtkgebatPxvtJsXyQ==","shasum":"bd4f01f9a6b91b16b281343e665d110487f68d67","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.2.1.tgz","fileCount":40,"unpackedSize":459963,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEzP8WsRmsqfxzxgQQDI9bnfA0LfQ6DzKJjLy07jbe3RAiBhQ+Kdgsas3xfFk5VOStKXAqU+N/mJWqChNKT47UENWA=="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.2.1_1691605910796_0.5076442540658272"},"_hasShrinkwrap":false},"6.2.2":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.2.2","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.12.12","@babel/preset-env":"^7.12.11","@babel/register":"^7.12.10","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.2.0","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^8.2.1","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"ba4f4eb1f81e01ac15aef377ae609059e9b2ffce","_id":"preact-render-to-string@6.2.2","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-YDfXQiVeYZutFR8/DpxLSbW3W6b7GgjBExRBxOOqcjrGq5rA9cziitQdNPMZe4RVMSdfBnf4hYqyeLs/KvtIuA==","shasum":"eb086b6db5d57468ab2c184896884fb0a818245d","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.2.2.tgz","fileCount":37,"unpackedSize":382446,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDelkAul5H10vKT7jkuif/RzToOmEJ6OBcnSdX4/yw1MAIgKN9XYmM94m73Rr0kmGRDHq3AbAqnPE5iJHHRugoP9vk="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.2.2_1696315854662_0.9285066483298523"},"_hasShrinkwrap":false},"6.3.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.3.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.22.15","@babel/preset-env":"^7.23.2","@babel/register":"^7.22.15","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.3.10","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^10.2.0","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"fd435502ebc487dce305d4ecf63dcd1d4cb86bf0","_id":"preact-render-to-string@6.3.0","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-7t5Zd8PUPeTt0+e/S16ffJBLM8+ZDsvYrt71sbMquKND/5NWtHOSZdURCvfYFyNwbXJOlWMuEjk3qzmdIFdebw==","shasum":"e39a686a5ae2905778f92cc51049852e8c050d7f","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.3.0.tgz","fileCount":37,"unpackedSize":388719,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKbDu8Lr8ffOr2+jFGWiKP8rRvYUKzQrflzA04r/ynKAiAqd4Umd8cb6+IcCvTkcC4PHeVzNLVDKkZPsniYqSSCRQ=="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.3.0_1699484499708_0.08420910887928357"},"_hasShrinkwrap":false},"6.3.1":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.3.1","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/index.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.22.15","@babel/preset-env":"^7.23.2","@babel/register":"^7.22.15","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.3.10","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^10.2.0","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"f4aff9d3f3818d9647de7e9d586c166e3e2dead8","_id":"preact-render-to-string@6.3.1","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-NQ28WrjLtWY6lKDlTxnFpKHZdpjfF+oE6V4tZ0rTrunHrtZp6Dm0oFrcJalt/5PNeqJz4j1DuZDS0Y6rCBoqDA==","shasum":"2479ebca8e6721cacfcecaa79bd861005a3d9b8f","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.3.1.tgz","fileCount":37,"unpackedSize":389109,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDa8FVIs5VKbOq0co0PW+kvrKFQchyeb4fUJ9bgPpsrFAiB0PNxnUYNPvmbfHMDvt0ZATKBQOcC9hw11hReu56Js8A=="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.3.1_1699887257246_0.1956113216361004"},"_hasShrinkwrap":false},"6.4.0":{"name":"preact-render-to-string","amdName":"preactRenderToString","version":"6.4.0","description":"Render JSX to an HTML string, with support for Preact components.","main":"dist/index.js","umd:main":"dist/index.umd.js","module":"dist/index.module.js","jsnext:main":"dist/index.module.js","types":"src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/index.module.js","umd":"./dist/index.umd.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./jsx":{"types":"./jsx.d.ts","browser":"./dist/jsx.module.js","umd":"./dist/jsx.umd.js","import":"./dist/jsx.mjs","require":"./dist/jsx.js"},"./package.json":"./package.json"},"scripts":{"bench":"BABEL_ENV=test node -r @babel/register benchmarks index.js","bench:v8":"BABEL_ENV=test microbundle benchmarks/index.js -f modern --alias benchmarkjs-pretty=benchmarks/lib/benchmark-lite.js --external none --target node --no-compress --no-sourcemap --raw -o benchmarks/.v8.mjs && v8 --module benchmarks/.v8.mjs","build":"npm run -s transpile && npm run -s transpile:jsx && npm run -s copy-typescript-definition","postbuild":"node ./config/node-13-exports.js && node ./config/node-commonjs.js && node ./config/node-verify-exports.js","transpile":"microbundle src/index.js -f es,cjs,umd --target web --external preact","transpile:jsx":"microbundle src/jsx.js -o dist/jsx.js --target web --external preact && microbundle dist/jsx.js -o dist/jsx.js -f cjs --external preact","copy-typescript-definition":"copyfiles -f src/*.d.ts dist","test":"eslint src test && tsc && npm run test:mocha && npm run test:mocha:compat && npm run test:mocha:debug && npm run bench","test:mocha":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js test/*.test.js","test:mocha:compat":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/compat/*.test.js'","test:mocha:debug":"BABEL_ENV=test mocha -r @babel/register -r test/setup.js 'test/debug/index.test.js'","format":"prettier src/**/*.{d.ts,js} test/**/*.js --write","prepublishOnly":"npm run build","release":"npm run build && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish"},"keywords":["preact","render","universal","isomorphic"],"eslintConfig":{"extends":"developit","rules":{"react/prefer-stateless-function":0,"react/jsx-no-bind":0,"react/no-danger":0,"jest/valid-expect":0,"new-cap":0,"curly":"off","brace-style":"off","indent":"off"},"settings":{"react":{"version":"16.8"}}},"babel":{"env":{"test":{"presets":[["@babel/preset-env",{"targets":{"node":true}}]],"plugins":[["@babel/plugin-transform-react-jsx",{"pragma":"h"}]]}}},"minify":{"compress":{"reduce_funcs":false}},"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"},"homepage":"https://github.com/developit/preact-render-to-string","peerDependencies":{"preact":">=10"},"devDependencies":{"@babel/plugin-transform-react-jsx":"^7.22.15","@babel/preset-env":"^7.23.2","@babel/register":"^7.22.15","@changesets/changelog-github":"^0.4.1","@changesets/cli":"^2.18.0","benchmarkjs-pretty":"^2.0.1","chai":"^4.3.10","copyfiles":"^2.4.1","eslint":"^7.16.0","eslint-config-developit":"^1.2.0","husky":"^4.3.6","lint-staged":"^10.5.3","microbundle":"^0.15.1","mocha":"^10.2.0","baseline-rts":"npm:preact-render-to-string@latest","preact":"^10.13.0","prettier":"^2.2.1","sinon":"^9.2.2","sinon-chai":"^3.5.0","typescript":"^5.0.0"},"dependencies":{"pretty-format":"^3.8.0"},"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"797c82fd7a8cb49c2cfd1f5c3f5e94a44b473956","_id":"preact-render-to-string@6.4.0","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-pzDwezZaLbK371OiJjXDsZJwVOALzFX5M1wEh2Kr0pEApq5AV6bRH/DFbA/zNA7Lck/duyREPQLLvzu2G6hEQQ==","shasum":"03cdd661d35e9ac76bed9f0e37ccceb42cae5fa5","tarball":"http://localhost:4545/npm/registry/preact-render-to-string/preact-render-to-string-6.4.0.tgz","fileCount":37,"unpackedSize":438403,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTa+cBqkHxRPuwDWpHw9h6UF0HFVokRCpvLEgoiEaZtwIhAJSIy8Q2fXZda8KVTd8CpzeT5jFPbCiww9rvyCyA125q"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-render-to-string_6.4.0_1708502133582_0.533613557833073"},"_hasShrinkwrap":false}},"readme":"# preact-render-to-string\n\n[![NPM](http://img.shields.io/npm/v/preact-render-to-string.svg)](https://www.npmjs.com/package/preact-render-to-string)\n[![Build status](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml/badge.svg)](https://github.com/preactjs/preact-render-to-string/actions/workflows/ci.yml)\n\nRender JSX and [Preact](https://github.com/preactjs/preact) components to an HTML string.\n\nWorks in Node & the browser, making it useful for universal/isomorphic rendering.\n\n\\>\\> **[Cute Fox-Related Demo](http://codepen.io/developit/pen/dYZqjE?editors=001)** _(@ CodePen)_ <<\n\n---\n\n### Render JSX/VDOM to HTML\n\n```js\nimport { render } from 'preact-render-to-string';\nimport { h } from 'preact';\n/** @jsx h */\n\nlet vdom =
content
;\n\nlet html = render(vdom);\nconsole.log(html);\n//
content
\n```\n\n### Render Preact Components to HTML\n\n```js\nimport { render } from 'preact-render-to-string';\nimport { h, Component } from 'preact';\n/** @jsx h */\n\n// Classical components work\nclass Fox extends Component {\n\trender({ name }) {\n\t\treturn {name};\n\t}\n}\n\n// ... and so do pure functional components:\nconst Box = ({ type, children }) => (\n\t
{children}
\n);\n\nlet html = render(\n\t\n\t\t\n\t\n);\n\nconsole.log(html);\n//
Finn
\n```\n\n---\n\n### Render JSX / Preact / Whatever via Express!\n\n```js\nimport express from 'express';\nimport { h } from 'preact';\nimport { render } from 'preact-render-to-string';\n/** @jsx h */\n\n// silly example component:\nconst Fox = ({ name }) => (\n\t
\n\t\t
{name}
\n\t\t

This page is all about {name}.

\n\t
\n);\n\n// basic HTTP server via express:\nconst app = express();\napp.listen(8080);\n\n// on each request, render and return a component:\napp.get('/:fox', (req, res) => {\n\tlet html = render();\n\t// send it back wrapped up as an HTML5 document:\n\tres.send(`${html}`);\n});\n```\n\n### Error Boundaries\n\nRendering errors can be caught by Preact via `getDerivedStateFromErrors` or `componentDidCatch`. To enable that feature in `preact-render-to-string` set `errorBoundaries = true`\n\n```js\nimport { options } from 'preact';\n\n// Enable error boundaries in `preact-render-to-string`\noptions.errorBoundaries = true;\n```\n\n---\n\n### `Suspense` & `lazy` components with [`preact/compat`](https://www.npmjs.com/package/preact) & [`preact-ssr-prepass`](https://www.npmjs.com/package/preact-ssr-prepass)\n\n```bash\nnpm install preact preact-render-to-string preact-ssr-prepass\n```\n\n```jsx\nexport default () => {\n\treturn

Home page

;\n};\n```\n\n```jsx\nimport { Suspense, lazy } from 'preact/compat';\n\n// Creation of the lazy component\nconst HomePage = lazy(() => import('./pages/home'));\n\nconst Main = () => {\n\treturn (\n\t\tLoading

}>\n\t\t\t\n\t\t
\n\t);\n};\n```\n\n```jsx\nimport { render } from 'preact-render-to-string';\nimport prepass from 'preact-ssr-prepass';\nimport { Main } from './main';\n\nconst main = async () => {\n\t// Creation of the virtual DOM\n\tconst vdom =
;\n\n\t// Pre-rendering of lazy components\n\tawait prepass(vdom);\n\n\t// Rendering of components\n\tconst html = render(vdom);\n\n\tconsole.log(html);\n\t//

Home page

\n};\n\n// Execution & error handling\nmain().catch((error) => {\n\tconsole.error(error);\n});\n```\n\n---\n\n### License\n\n[MIT](http://choosealicense.com/licenses/mit/)\n","maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"}],"time":{"modified":"2024-02-21T07:55:34.343Z","created":"2015-10-17T21:34:09.509Z","1.0.0":"2015-10-17T21:34:09.509Z","1.1.0":"2015-10-17T21:53:49.216Z","1.1.1":"2015-10-17T22:31:46.744Z","1.1.3":"2015-10-18T01:06:05.707Z","1.2.0":"2015-11-09T01:44:01.346Z","1.3.0":"2015-12-21T18:43:54.162Z","1.4.0":"2015-12-21T19:27:54.681Z","1.4.1":"2015-12-21T19:40:04.433Z","1.4.2":"2016-01-29T13:59:36.470Z","2.0.0":"2016-02-13T20:17:44.037Z","2.0.1":"2016-02-26T01:00:21.026Z","2.1.0":"2016-03-11T02:31:55.292Z","2.2.0":"2016-03-19T18:42:14.581Z","2.3.0":"2016-04-14T00:22:16.066Z","2.4.0":"2016-04-14T01:49:55.657Z","2.5.0":"2016-05-04T18:23:02.576Z","2.6.0":"2016-05-20T20:33:50.982Z","2.6.1":"2016-06-30T04:25:00.477Z","2.7.0":"2016-07-22T16:32:00.046Z","2.8.0":"2016-07-29T20:46:09.881Z","3.0.0":"2016-08-02T23:14:06.126Z","3.0.1":"2016-08-03T00:31:16.601Z","3.0.2":"2016-08-03T00:43:40.804Z","3.0.3":"2016-08-03T01:02:15.707Z","3.0.4":"2016-08-03T01:28:50.012Z","3.0.5":"2016-08-03T22:55:24.552Z","3.0.6":"2016-08-09T18:57:37.925Z","3.0.7":"2016-08-09T19:25:01.652Z","3.1.0":"2016-09-20T23:40:01.282Z","3.1.1":"2016-09-21T00:00:10.763Z","3.2.0":"2016-09-29T16:05:24.865Z","3.2.1":"2016-09-30T18:01:46.329Z","3.3.0":"2016-11-29T19:07:29.200Z","3.4.0":"2017-01-17T14:55:52.384Z","3.4.1":"2017-01-17T17:42:55.374Z","3.5.0":"2017-01-20T19:28:34.495Z","3.6.0":"2017-02-14T18:49:35.592Z","3.6.1":"2017-04-26T01:04:09.164Z","3.6.2":"2017-05-11T22:15:00.204Z","3.6.3":"2017-05-22T22:46:02.956Z","3.7.0":"2017-10-12T18:31:06.355Z","3.7.1":"2018-08-01T19:21:04.347Z","3.7.2":"2018-08-01T20:54:53.802Z","3.8.0":"2018-08-02T02:10:42.514Z","3.8.1":"2018-08-16T00:43:20.687Z","4.0.0":"2018-08-16T01:19:29.471Z","4.0.1":"2018-08-17T02:21:39.290Z","3.8.2":"2018-08-17T02:25:37.377Z","4.1.0":"2018-08-17T02:36:31.357Z","5.0.0":"2019-03-07T15:46:07.096Z","5.0.1":"2019-03-14T19:31:46.318Z","5.0.2":"2019-03-25T17:39:09.265Z","5.0.3":"2019-05-07T16:59:37.481Z","5.0.4":"2019-06-22T05:43:10.868Z","5.0.5":"2019-07-11T21:02:48.223Z","5.0.6":"2019-07-15T13:31:18.624Z","5.0.7":"2019-10-13T19:39:42.456Z","5.1.0":"2019-10-20T07:20:08.031Z","5.1.1":"2019-11-01T22:03:09.587Z","5.1.2":"2019-12-06T07:41:12.143Z","5.1.3":"2019-12-19T10:26:50.210Z","5.1.4":"2020-01-23T05:48:11.399Z","5.1.5":"2020-04-07T19:42:54.085Z","5.1.6":"2020-04-10T15:58:44.996Z","5.1.7":"2020-05-04T20:17:39.084Z","5.1.8":"2020-05-08T10:17:42.567Z","5.1.9":"2020-05-29T20:14:19.827Z","5.1.10":"2020-07-14T11:34:44.930Z","5.1.11":"2020-10-21T20:22:44.013Z","5.1.12":"2020-11-14T20:11:23.787Z","5.1.13":"2021-03-07T14:10:12.911Z","5.1.14":"2021-03-08T08:24:21.427Z","5.1.15":"2021-03-10T10:20:26.883Z","5.1.16":"2021-03-11T19:01:56.486Z","5.1.17":"2021-03-28T09:35:57.189Z","5.1.18":"2021-03-30T00:06:10.953Z","5.1.19":"2021-04-05T10:48:12.923Z","6.0.0-experimental.0":"2022-02-20T13:36:38.479Z","5.1.20":"2022-02-21T13:39:58.151Z","5.1.21":"2022-04-08T08:14:56.447Z","5.2.0":"2022-04-29T08:05:31.992Z","5.2.1":"2022-07-12T20:18:50.789Z","5.2.2":"2022-08-16T20:07:00.089Z","5.2.3":"2022-09-06T21:22:29.570Z","5.2.4":"2022-09-10T19:34:42.711Z","5.2.5":"2022-10-06T19:18:02.575Z","5.2.6":"2022-10-23T15:46:54.690Z","6.0.0":"2023-03-27T06:58:09.085Z","6.0.1":"2023-03-28T10:25:19.782Z","6.0.2":"2023-03-29T11:47:52.256Z","6.0.3":"2023-05-01T17:17:24.979Z","6.1.0":"2023-06-09T07:46:15.590Z","6.2.0":"2023-07-10T09:13:04.163Z","6.2.1":"2023-08-09T18:31:51.037Z","6.2.2":"2023-10-03T06:50:54.883Z","6.3.0":"2023-11-08T23:01:39.968Z","6.3.1":"2023-11-13T14:54:17.401Z","6.4.0":"2024-02-21T07:55:33.819Z"},"keywords":["preact","render","universal","isomorphic"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","readmeFilename":"README.md","users":{"developit":true,"moimikey":true,"pixel67":true,"ciro-maciel":true,"arkanciscan":true},"homepage":"https://github.com/developit/preact-render-to-string","repository":{"type":"git","url":"git+https://github.com/developit/preact-render-to-string.git"},"bugs":{"url":"https://github.com/developit/preact-render-to-string/issues"}} \ No newline at end of file diff --git a/tests/testdata/npm/registry/preact/preact-10.19.6.tgz b/tests/testdata/npm/registry/preact/preact-10.19.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e9b41c5a744e9b7eddba13bed84b022e12aa6f24 GIT binary patch literal 364392 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 Q+mVp6bJ$gEw2- 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

h; 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 yD!Sg}mo4K+-!Wtsrs-6kKsi! \u001b[34mhttps://opencollective.com/preact/donate\u001b[39m\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.6.1","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","gzip-size-cli":"^1.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.40.0","rollup-plugin-babel":"^2.7.1","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"babel":{"presets":[["env",{"loose":true,"exclude":["transform-es2015-typeof-symbol"],"targets":{"browsers":["last 2 versions","IE >= 9"]}}]],"plugins":["transform-object-rest-spread","transform-react-jsx"]},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"90a720cfc539106db0e4e390f1d59eaa518c2a93","_id":"preact@8.2.0","_shasum":"a42e9554284455afa863d338f889da2a6270f909","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"a42e9554284455afa863d338f889da2a6270f909","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.0.tgz","integrity":"sha512-z+4wq224wdu2cc6XTrmkRku+Mwt5Y2Zlpkd5H0VkzFw5XCCs02f6zlAElGrAO4qM4svakYkuwUf/xJZxPn5/6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHU8PksD5x9jy4AynF2eogKiV5wsHdm9cR1gRUt3LtoeAiEAuu7++jfuUZ2I3xGrOZnqBxPFH6RNHntJlLJ+BgzPcL4="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.0.tgz_1499739878871_0.07160521647892892"},"directories":{}},"8.2.1":{"name":"preact","version":"8.2.1","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","transpile:main":"rollup -c config/rollup.config.js -m dist/preact.dev.js.map -n preact -o dist/preact.dev.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js -o devtools.js -m devtools.js.map","transpile:esm":"rollup -c config/rollup.config.esm.js -m dist/preact.esm.js.map -o dist/preact.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:size","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"npm run -s donate","donate":"echo \"\u001b[35m\u001b[1mLove Preact? You can now donate to our open collective:\u001b[22m\u001b[39m\n > \u001b[34mhttps://opencollective.com/preact/donate\u001b[39m\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.6.1","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","gzip-size-cli":"^1.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.40.0","rollup-plugin-babel":"^2.7.1","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^2.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"babel":{"presets":[["env",{"loose":true,"exclude":["transform-es2015-typeof-symbol"],"targets":{"browsers":["last 2 versions","IE >= 9"]}}]],"plugins":["transform-object-rest-spread","transform-react-jsx"]},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"e026d9e1a871a3f84fb88a499168b4af083673f6","_id":"preact@8.2.1","_shasum":"674243df0c847884d019834044aa2fcd311e72ed","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"674243df0c847884d019834044aa2fcd311e72ed","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.1.tgz","integrity":"sha512-HDK25lJcwkW/tYs9Wtvm4agY/3RsRj5rGw0VDDMuqmfGTAm5dWPFIESvnWfevkeRxy4PcMr/+zMCuQCkEoYPdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZE/eTYz85m1eUHxTHvHEfZ36kqIJnoPzUoXDxxgCexAiEA1FeGt4E2E8SAIcWe6LF9ghxpvtdQq9YUWRPowwyvhu8="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.1.tgz_1499812588945_0.9321069598663598"},"directories":{}},"8.2.2":{"name":"preact","version":"8.2.2","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:size","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","prepublishOnly":"cp package.json .package.json; node config/prepublish.js","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node ./config/donation-message.js"},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.13.2","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","gzip-size-cli":"^2.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.48.2","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"babel":{"presets":[["env",{"loose":true,"exclude":["transform-es2015-typeof-symbol"],"targets":{"browsers":["last 2 versions","IE >= 9"]}}]],"plugins":["transform-object-rest-spread","transform-react-jsx"]},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"adceb204df4e8a6cfc99a32cb63b4ea8b6e71606","_id":"preact@8.2.2","_shasum":"8eb9042fce56141040b4741f10e15b44f96ba7b8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"8eb9042fce56141040b4741f10e15b44f96ba7b8","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.2.tgz","integrity":"sha512-IgsBlXHisg21nwrTTc0K0QkxhLHv4B6zt5xPZ4einiHYNiLeVscYERAU2KfbqQY+AH5AMwR4lAV85Ahq+cThJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7fR58+McPjL61qxi+Mgac4KBj72rICyg8DtdpJxndvQIhAKOUhG8rVdWe6I/L0N1/3OtiVlLRama4Fr0fLFbD5jNQ"}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.2.tgz_1503593066389_0.4001851852517575"},"directories":{}},"8.2.3":{"name":"preact","version":"8.2.3","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:size","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","prepublishOnly":"cp package.json .package.json; node config/prepublish.js","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.13.2","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","gzip-size-cli":"^2.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.48.2","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"babel":{"presets":[["env",{"loose":true,"exclude":["transform-es2015-typeof-symbol"],"targets":{"browsers":["last 2 versions","IE >= 9"]}}]],"plugins":["transform-object-rest-spread","transform-react-jsx"]},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"512ff9f114be7568f1edfa66835dd4529d503d9c","_id":"preact@8.2.3","_shasum":"4e6fe0d4e6d53a7cad6e05180453993557d8c573","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"4e6fe0d4e6d53a7cad6e05180453993557d8c573","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.3.tgz","integrity":"sha512-h8rFpExnopkQvxr1O8PAHcG0ZhshmxK+eNKhmk5cngGJnk+lTkfm2Nk+1VY7PAFRPtP9pMs5n30KNMGXmVUxXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwiQCdZA6lAyA14SCdcOja1rANyKSI6r/o4s/NvLcZigIhAJNXodvmogq4h8296F9Y72wIK8UjmiHekhdswR6+VSvP"}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.3.tgz_1503596225184_0.011196639621630311"},"directories":{}},"8.2.4":{"name":"preact","version":"8.2.4","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:size","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","prepublishOnly":"cp package.json .package.json; node config/prepublish.js","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.13.2","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","gzip-size-cli":"^2.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.48.2","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"babel":{"presets":[["env",{"loose":true,"exclude":["transform-es2015-typeof-symbol"],"targets":{"browsers":["last 2 versions","IE >= 9"]}}]],"plugins":["transform-object-rest-spread","transform-react-jsx"]},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"b33d837d69db066b27b03d3807f20cbbee4119a0","_id":"preact@8.2.4","_shasum":"144ea50cb57b7659ac5f631191b9418bdec7ed0a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"144ea50cb57b7659ac5f631191b9418bdec7ed0a","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.4.tgz","integrity":"sha512-DYYpIn8zLcV5PnhWjFiJOxPdmWXOtUl5BS+lgUrnk/QzKYM4jFgg6V4TuNOLqA0UE9jwjLXPNsG0QAXwkqo1jg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAU6XgM7MRSP9LASX8HIdsKfNH/BAKw2t+hruANKDJAxAiEAvHKxL/U/H/qPyzmk+t+jIxCzI9FlgXIM7ZYiXyChX14="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.4.tgz_1503601692551_0.9474105951376259"},"directories":{}},"8.2.5":{"name":"preact","version":"8.2.5","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:size","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.13.2","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","gzip-size-cli":"^2.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.48.2","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"2205c0f65d9595df1b1fddd7b09c79102ae34401","_id":"preact@8.2.5","_shasum":"cbfa3962a8012768159f6d01d46f9c1eb3213c0a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"cbfa3962a8012768159f6d01d46f9c1eb3213c0a","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.5.tgz","integrity":"sha512-4uNhekzX1XbDU7r582TEn36+eO1kESBZzztj91HXtlNQfDAcLWL0kQmv0UDKvrlkWz8eeF5VfHp4Ta3uia9qOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHwJ51/QzzcaDq8oT1y9xQrzPIMxUUHHjqerFt9FV1Q4CIQD94jMKYlHkAuQwXJtdCh3w9lZ640QHdkuX1ALpMBQWCw=="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.5.tgz_1503953750481_0.26566282380372286"},"directories":{}},"8.2.6":{"name":"preact","version":"8.2.6","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.13.2","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","flow-bin":"^0.54.1","gzip-size-cli":"^2.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.48.2","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"aab84f8f169298a5ee04598a7b7b0b429002bc91","_id":"preact@8.2.6","_shasum":"0028b426ef98fcca741a3c617ff5b813b9a947c7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"shasum":"0028b426ef98fcca741a3c617ff5b813b9a947c7","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.6.tgz","integrity":"sha512-+dnwZe65LZVjr0XMcUJOYS6fg8v9ZO5oaOI7TmuFpBdwC3KV3k69uiRvjuj5Fk9rWGA7rtHs2N8UGx+goDgkrw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9xk4ScXJ5olKdv+2OtrRdNiCp8JER6VbQNkTvIfoAJQIgZY3DKNGGH99XPHPzsUidJVN3mo1Ch45Hxi4y+LtYyoE="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.6.tgz_1508862053803_0.010016248561441898"},"directories":{}},"8.2.7":{"name":"preact","version":"8.2.7","description":"Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublish":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^7.2.3","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.5.1","bundlesize":"^0.13.2","chai":"^3.4.1","copyfiles":"^1.0.0","core-js":"^2.4.1","coveralls":"^2.11.15","cross-env":"^3.1.3","diff":"^3.0.0","eslint":"^3.0.0","eslint-plugin-react":"^6.0.0","flow-bin":"^0.54.1","gzip-size-cli":"^2.0.0","isparta-loader":"^2.0.0","jscodeshift":"^0.3.25","karma":"^1.1.0","karma-babel-preprocessor":"^5.2.2","karma-chai":"^0.1.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-phantomjs-launcher":"^1.0.1","karma-sauce-launcher":"^1.1.0","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^2.0.3","mocha":"^3.0.1","npm-run-all":"^4.0.0","phantomjs-prebuilt":"^2.1.7","rimraf":"^2.5.3","rollup":"^0.48.2","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^2.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^2.2.0","sinon-chai":"^2.8.0","typescript":"^2.2.2","uglify-js":"^2.7.5","webpack":"^2.4.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"17cc8deddd3d4e592685dfa42e832f6e8d2cb795","_id":"preact@8.2.7","_npmVersion":"5.5.1","_nodeVersion":"8.9.2","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-m34Ke8U32HyKRVzUOCAcaiIBLR2ye6syiuRclU5DxyixDPDFqdLbIElhERBrF6gDbPKQR+Vpv5bZ9CCbvN6pdQ==","shasum":"316249fb678cd5e93e7cee63cea7bfb62dbd6814","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH1MLIA/ETLN5PvgMerXTUDtfHNZDYV3Ql58LQ4RDlWiAiAn2IxayyB1mGM4r47to5ugd6NIOB11pU0Sj3EAzzAoZA=="}]},"maintainers":[{"name":"developit","email":"jason@developit.ca"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact-8.2.7.tgz_1513102710223_0.7690983023494482"},"directories":{}},"8.2.8":{"name":"preact","version":"8.2.8","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js --source-map \"base='dist/preact.dev.js',content='dist/preact.dev.js.map',filename='dist/preact.js.map'\"","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js --source-map \"base='dist/preact.js',content='dist/preact.js.map',filename='dist/preact.min.js.map'\"","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^9.4.7","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.2","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.1.2","copyfiles":"^2.0.0","core-js":"^2.4.1","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.7.0","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.0","mocha":"^5.0.4","npm-run-all":"^4.0.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^4.4.2","sinon-chai":"^3.0.0","typescript":"^2.8.1","uglify-js":"^3.3.14","webpack":"^4.3.0"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"d193b4e6662c6d2f526343217a5b380fe01e8634","_id":"preact@8.2.8","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-+uRD0cQhGFThjoE4NfSciQILvwD5lkLoC4Pgg7zI2GjkduX7/eSx6v9mptjW/F8OZjBUIe/mseQyw8p1HDonRA==","shasum":"cf6cfa1d746541e31875f39dfadd9c76e932d29c","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.8.tgz","fileCount":38,"unpackedSize":407115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4i2sCRA9TVsSAnZWagAA86IP/A9fM6jGJmFbRt8rfya1\nWmT+fnTPB/zjD7ao6QrZW0FMO8Srb2Ob1DgO11wWtIXuVdK+Ud9rplavSX8w\nCdbA3OlEEevK7RRBY7h5SkvDsk4Jwoh570tn+8pyYCvpYXK6j8kTeo4g73sQ\n0g2OLkwgm2REgidojIvFZBop3+pZxPvZ9rWINGFr8OzE0tuExNaxF5X58R2f\n81GAwsya0CwDWWZ5oTKw6C8oG5bK6mw0nCoyRHs6F9WYP38Ig6Pmzon7t3IU\nVho29cVml7Jtjanpair3lcMqeJe1zZg/XXCx74N5hIBJxiFKpSDdEHG7S+7x\nyFbcrduIGVsOe5Yo2qL1013T1M2KMOVYcKlcynZLW6Afsn0ovx4pfMRvCz9d\nhyL1utB1yQOTUQUwvdK6kxEihdufLc4iKO7bVZWmaQshFjUY8qAK1n2APkIt\njBp/wlQMCQS1W6YwxsVoIWlk08JBzfNNSoGjMiDq8ifM+FJ6xcvkyA5KC6HD\nRk1dBXECFCzQXYpl+Cl6nM/FwG+1C/q0MsgBl6WVqxYSAKdBsLq7eIdLDIkw\n6PikptfeBNRPkq21hQyPqEfYiXjxMbwD1itri/R349jv7/dzGGf+aIA76HwO\nCiya2XXCO5X6eTX41NehxbMN6UBOSDy+AoD9qB9h9AVNVn0hfmpHprk28tnC\n1rEC\r\n=1vJ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgsbhfIHVRR8Dh6dWlHAJlDWc6c3VNk4Eaqz76YxdoDQIgVtmpOfrjMKv04c803JVnKKiadshTq1hpWntmqWeE9bI="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.2.8_1524772266418_0.13395926099617794"},"_hasShrinkwrap":false},"8.2.9":{"name":"preact","version":"8.2.9","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.esm.js","module":"dist/preact.esm.js","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.esm.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.esm.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.esm.js","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^9.4.7","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.2","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.1.2","copyfiles":"^2.0.0","core-js":"^2.4.1","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.7.0","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.0","mocha":"^5.0.4","npm-run-all":"^4.0.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^4.4.2","sinon-chai":"^3.0.0","typescript":"^2.8.1","uglify-js":"^2.7.5","webpack":"^4.3.0"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"9affea6c0f1e3beb5c4879d570af3fd774e62f8a","_id":"preact@8.2.9","_npmVersion":"6.0.0","_nodeVersion":"9.11.1","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-ThuGXBmJS3VsT+jIP+eQufD3L8pRw/PY3FoCys6O9Pu6aF12Pn9zAJDX99TfwRAFOCEKm/P0lwiPTbqKMJp0fA==","shasum":"813ba9dd45e5d97c5ea0d6c86d375b3be711cc40","tarball":"http://localhost:4545/npm/registry/preact/preact-8.2.9.tgz","fileCount":38,"unpackedSize":484926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5yqOCRA9TVsSAnZWagAAvFEP/0JO3wYI/VDLXbYipNKZ\nvu68sjzuNA1h8VkwJwRtWmcK4f0/6eVe0Xd9BTQgeXAWLZBXL1Npd61Yh85M\nSdQbXbN8IuC4VZrfSYWb+WeubDhw4LZTHDpITGiOTWnZC/hQN+nh6Ch/lECd\nIntzfq2W+PzlSde0taupCZ3fp6KqXEc9gAwHaUEwIcIaSbyu0RDNTGXohaIn\nPsz222bZRfr1DW6xH/Wg0dOMlOIpSkVm86F438nVZ/9fYT3Nk0FZtOCirvzk\nMA8V70TPFhvBgaN469N/lfwo9ZpkNIUh27WzWfZpSZ4ni+Q9RW34qQaFq8J9\nto9zX3AQeWBeds3LFeYPUp9L08TDOCcBMIy+BhBdP2fMoYljLKDTR44lUT46\nZT3EoxXQAPvo1Hi3nyenpLrMi/OgDvk5jiCPEHsLPU/70tfpZfJq+z4uzod6\nMbS4xP0ukZavd0h5vAP26drY5R74gmqj0X5oY09RJw8/Xva+Gecx/vY8Zf7o\n886zjXX4nO+RMAVwmbGoaQgNnvbszQc/KqfxFSZSA+MAPsvzKjLDUihpAqNm\nzeh+tq8Bar0+YjYGpNl3o2yBEIU81aAcHl+a2R5w+8FZXmGdHgkL0FvfxXx1\n9nXeoF10x4toUPlVeYmr19jfap+5BY2ql1vBFEfhUcvqO9qWSeTV7GYB70Kd\nydwv\r\n=b7CW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNEdGNRmxhrPNS7UJ9YcvSDQy45HaXYHj17qQWehdI6AiEAgi5Sn8KwApoJctD9b4oWdVlMob02vkxEDyyqlMkeKv0="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.2.9_1525099147959_0.5310639297055331"},"_hasShrinkwrap":false},"8.3.0":{"name":"preact","version":"8.3.0","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^9.4.7","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.2","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.1.2","copyfiles":"^2.0.0","core-js":"^2.4.1","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.7.0","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.0","mocha":"^5.0.4","npm-run-all":"^4.0.0","puppeteer":"^1.5.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^4.4.2","sinon-chai":"^3.0.0","typescript":"^2.9.0-rc","uglify-js":"^2.7.5","webpack":"^4.3.0"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"8dea9cc2da4c87f7b2416a57e210fd679e22b5fa","_id":"preact@8.3.0","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-yhP68bOZMWaNjfKig0xeL59H9TRShxCoLEUVnvKXfSqLK67EDYev7GVgAhKHmATK/HpnGw6SjSooVvEJgeAUDQ==","shasum":"eef16418bc351a44015b62c447722132ce5c36eb","tarball":"http://localhost:4545/npm/registry/preact/preact-8.3.0.tgz","fileCount":38,"unpackedSize":492222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZ1/eCRA9TVsSAnZWagAA8F0P/jVGcw9B35QsqYjeg9B7\nIw97etQa1CBUD6B8MtyrAjCTvcDEbGIeYusgk3Z7JJwd15+kx4caR4UasJK1\n7b9rcyWKbsOERjRqtAfgZuzD6MM/RMmZCNltjfWMYxumWwXWeu4cIqE5rDDX\ntCvDgmWNV9JWesOi6OkMexDMEFlgIi68nkxvGaKRX6s7SZjN2EhiE5HZVjRD\nOmyYafnp8tfKRv8LMs2AMBoCdkM2dIKhGJ7MhGVGq+1AdC5tqqYbaRRLNYC7\n0KA9Vq3uyNbgTCWyrBcjMeyBFklcEBER2PnONGGdpNtOAaC8ZwkILSyaqM7P\npG2MdsGB8G8G30LhfonbGzgUumat/gyii12yV49FYt4joAoUdvdHp24f5QVb\n0C+pg55UQjDhZCfx8CQaQp2cgiEVvRG0tQgcqEqLhjyTQHfJ6G8XH7xccx4B\nheor/tfSJnBPvzllLjOuoyeyQyAABehzSiPydrwpotTtbtxL6yfegX5J8qPm\nFeYoI5P9q1Zyky4BofOlmgmHMlnzQRB49KHlo3t9+b6ATY8VnIrpayaibLaB\nm1s7nz61p0gYwRgEUU470TsvVWpfnXq0lS7Xw5awQv1SyQ/WqkI6LuBMiY4t\nQYU3gM423ru04pr4h1NMWga+IytwAd8b0ZCrfWsFeunFCoYQjh5xs5CHqAKP\nQsNK\r\n=DNZO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMwzn98TJnjTmBMcmeGjxA/Jcp9kkfw78THpKEw2tIhAiAW0va9F4Pi7UzlaEoGXEW87mKNG2kok1Dc/+1DDze9jg=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.3.0_1533501405479_0.24202988906071643"},"_hasShrinkwrap":false},"8.3.1":{"name":"preact","version":"8.3.1","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"files":["devtools","debug","src","dist","devtools.js","devtools.js.map","debug.js","debug.js.map","typings.json"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^9.4.7","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.2","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.1.2","copyfiles":"^2.0.0","core-js":"^2.4.1","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.7.0","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.0","mocha":"^5.0.4","npm-run-all":"^4.0.0","puppeteer":"^1.5.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.0.0","sinon":"^4.4.2","sinon-chai":"^3.0.0","typescript":"^2.9.0-rc","uglify-js":"^2.7.5","webpack":"^4.3.0"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"fa9d3d2a03f7b82f31d101265cfc4b9204fc04a5","_id":"preact@8.3.1","_npmVersion":"6.4.0","_nodeVersion":"10.6.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-s8H1Y8O9e+mOBo3UP1jvWqArPmjCba2lrrGLlq/0kN1XuIINUbYtf97iiXKxCuG3eYwmppPKnyW2DBrNj/TuTg==","shasum":"ed34f79d09edc5efd32a378a3416ef5dc531e3ac","tarball":"http://localhost:4545/npm/registry/preact/preact-8.3.1.tgz","fileCount":38,"unpackedSize":492524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdNT2CRA9TVsSAnZWagAAn80P/jQDE4bcrEF08EpqpDp1\nMeL4epE4YXNaKP7LFpvVB842gQdOtITn8fqmUbf2XHXz+aHWW7EsjlVqYUNT\njCD+Qce5LlrHjaz3UjVVj1khRfeQ82vBxULwVZizwXllTqbzh2VD7D/lSPUt\nGeGZFXEy6kvnswWIqxG4tlkq/qjL6P14JdvKNz60K3p7jO0PUSzZv1xMcDCd\n2y8SnPsE94Eidsg+xRcYb4SgjYsZUtUUTbAp4skk5jlG8so0RI5s7kTBxSPm\nnug3fschee6N54LjBNqwhqTCENIumZjW5drG+sH//3kKGDGITEPZ/Ms6wnxH\nkn5YKcAGlmRJNNUoBat7XYs9T+ucOT7HsYyV/UUXuhJTOmVqUVzJQtnY6x7a\nQiwPUUv3sKkt4Sw+37Ls5XBIp2pDIT0aIWl0UI2uJhxJ865NR5av79noF/Mi\nUUaQ7JdNuNW/buS91TD9Wj5EBhbc2HX9/TkDjzzpnzqNDr/z6OEO4wGRGff8\neurfb+YjB+DrZQIPqH+j7jy6cL57jWf4ppCtGcw+wrsFNBngpP2qro/TONPY\nC50C6xn9SfScJKnE5lfyu9DlsyEEj5mubdh+P/f78besuIQRHqt2sfGRA3Pk\nCc+N2xS3HL8KtAIW79Zu/YOsvOX1WCDOYTHQE73h9YzjERHEb5cLZkP2u5VY\nyhN5\r\n=J5wJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAV4/TAivioD4Refo+UPTTdU1Jj+wkzmO4pU5skouYXgAiAB0bFRHREOFAR0rOF6mWdiemxbBtVnWt3DnLT6faBMmQ=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.3.1_1534383349685_0.8989399500996755"},"_hasShrinkwrap":false},"8.4.0":{"name":"preact","version":"8.4.0","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.5","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"3a35a89b2990007cf622ae785299aa298c6135e3","_id":"preact@8.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-0G7A33/w9nVD9iiwjRpkc94+WutMmE0FXNJCJNXGlsSC5bPVt0cM5ZV5aXylLBd5EGcq/iqOgUgZ7QpRuqKqUg==","shasum":"e2dd34385cba4fc243259f7d5e392f92c84556a4","tarball":"http://localhost:4545/npm/registry/preact/preact-8.4.0.tgz","fileCount":38,"unpackedSize":497736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCXZMCRA9TVsSAnZWagAAu3oP+wba+wmb6gJKRWaBjKFv\nUO29BOlueotSte0d9Teo7nEI32eXzk2G8YRoKm4tUA85bB/ZfhnAyqtdXe7N\nPz9fD0YIAmruBShTazmDJDO4gJQd0ZxBwmCMa6U8NNMhUwj1Aj+b5xO2sYT6\nEYhJMOEDNcwQ9dXL2sRZwCXnfNUZl6AGvBmrM96mGWejYpVmdpyxfC9WhPhn\nkCHlC64n2fePJvicqo4n7h2y82dtFufYDpw+pK1FKJ3ynnQa7au1Gr2Qf9qr\n+IFfDExehINV0grnSkyHwqusoMWhvxvP+0uJPCx+iM1GZKLYxm6Z63+al8xd\nnW8bQGvyHlXRhCj9s0EGBfyZl1hacfJHdOEpFfPt/u+MNJftwiyeiHtcLn/v\n734jcogHpMvnwcvvL17B6EszNeCwnzLTCkYgkXD6PSWd7fY0ueUqloh+5okH\nOOg60V8CQnxKN9LL600he7uq6Nr7ba/wD8FhvQ0lhKWW60WpajzUQIA2V2b3\n+Ix5+r9QSwl3v9JK1Q1k0CzpcpTJaW/ktWh7nsOrw9cqo+p4TAdWy/xJQDLp\nYpx2h65FHsFS8uaTcjoDOQKCb4X+s05ayWyJkcG9Iavd44aLCqBeq3vIufRc\nahlYPyCz5MGo8HVtVhDItNlaSVoELJVIVBXrdiBzQ2u3/GWwQ5vQ6ltKoSIF\nXygD\r\n=wlJ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxF8KmQsB+jr9L8VWJKmjYWYmyWDV+97zF9S7tdSkuZQIhAMRpEVyIKySV7MOX/iFnGHkfpCM+FFi3wsOnIh6cCRfn"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.4.0_1544123979293_0.8328765686293897"},"_hasShrinkwrap":false},"8.4.1":{"name":"preact","version":"8.4.1","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.5","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"f09943006f7a07b4204e13ed54d9e372628a6a36","_id":"preact@8.4.1","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-42xy7+9MIDFc1XJrTfesW0I0DnEqylKJbK6/p+jqBqGPoYAAngShTVbJfex5kJPvC1jDvDhy84o+uZDo1sdSjw==","shasum":"d1909072a336c6d11da0320bdbd83f79e8245f35","tarball":"http://localhost:4545/npm/registry/preact/preact-8.4.1.tgz","fileCount":38,"unpackedSize":497841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCX64CRA9TVsSAnZWagAAiywP+wWGzAl+fJe5c9DmkAsu\nUFcnw4R6ZSmWYxcRcvuNBwNIDn89qqMlXnSP8adVl2JcMQqHk/4/yp5WGdR7\nVdmtla38YL7sU4Lb9nurKrAkEdWh/LW/sCdyYiAzJY4PwDZ1Nszmgt2X/EfE\ndImBnxTVgY1aZ6Wz1O02+uuZRwKQWbNfhcZOvBgqQuNlMUq16JXv5LXaHY+7\nEjpLNBFB/kTINgVdd9X7cb9O2u7dvgZ5cwFFGLJGm2VkWlYsQEMDzxijLLCW\npcIVR4JtJvKJbtCBp9dUpEG4+xX6nTfB9PIcGUmTWPG+D57fLNAalqdSol5Y\naO6SPA8UwXtuWXJWL/PLKFVdBMTuWBINYzAAiEfWrbqZxxhaU50qofhYY4et\n4AXWVsrp7intBEAhgW/1pJr9cSBLYO83qlkv6eTGr4aImAoj17Ay25wAJK4n\nSRxxvbfWQNSQu0KJl2FAq+dtfWqZtRV3N32J2747zTvLiz4Sqcg2mk/ka01h\n47ujYZ6qsgbfiOrepajleXbwTOG7JJhaW7yCPkRoGLX61LjnvzRtF0NWj2v+\nU3U5wWDyLXuk5Mvf0aq7QjXftjFfE4spziu4lsHDVK6Omz5GE0pkay7Z4Y1l\nKsBP2Hzw6qNC0muVDaXrqOwtwKV88df2P55cICZFolG85w6RlaSAAFikE3rL\nH9kg\r\n=YeuC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICnkQqY2ZrxDytkwUM7nosYntRGHEWPnLZno3DisrFFVAiEAnSc59f7H6kTqMOgqMYsaLFeG6lyW09z9zuiP/wuvfi8="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.4.1_1544126135941_0.9274231049542507"},"_hasShrinkwrap":false},"8.4.2":{"name":"preact","version":"8.4.2","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","types":"dist/preact.d.ts","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.67.1","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^2.0.5","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-mocha":"^1.1.1","karma-mocha-reporter":"^2.0.4","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.2.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"4e400a5e49e1c28c863e3f124d16089b64bf5ca7","_id":"preact@8.4.2","_npmVersion":"6.4.1","_nodeVersion":"10.9.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-TsINETWiisfB6RTk0wh3/mvxbGRvx+ljeBccZ4Z6MPFKgu/KFGyf2Bmw3Z/jlXhL5JlNKY6QAbA9PVyzIy9//A==","shasum":"1263b974a17d1ea80b66590e41ef786ced5d6a23","tarball":"http://localhost:4545/npm/registry/preact/preact-8.4.2.tgz","fileCount":38,"unpackedSize":497149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCt1PCRA9TVsSAnZWagAAL6YP/jYFJ5U69WF5Khxstoxk\nFjRn9dgPNFCfa/uVMxnkPU/4JMqKKnJj8S2fw7TKqo8qUMkvAnA1GzDka+Cv\nv0qoF1TDIgnZBWQOr4dWO+eQUaKFlCuVjfqFxg0NaHJmAzOkxCVqP/Cv6i6X\nroTxUOEBruPbHsM0oDf0FPk4qTtBAppcegMaM8CwEMOLhncXh3PVwEghKkU2\nnkfjyx24bbDN+bTjA3uzCmQCNdKrfiPBQ2AHzmrqumYq4RaQ4WNZfEIExSgL\nH7Hu+uuopnqo8e3/MGoGA3RlBfSq38RzAlTAlocZO2IC6bd5fK0t90laLjF2\nqAF1A2bitG/+RGwyLdPyUzWOFYGUtG1IcDUHzfRfHVtrs2/1FmCueucvelDv\nc+ej6C6temXPPRiVlfQdI1e/UBqdsI1T3nXE4jNk/yRqrhaVD6Gv+JAItroc\nOWUMII5WsFh2ATbqojOrYgxxk+QzPbOIFGN8h2jqtz/yZi0rLTXw7fV9IZlr\nDVWpeXZUGihL8RvD5Ik1xeg6khnyDz9mcRA7BA3ihKzGqkcfYi9dB1w4Ae1o\nCJeOtoblSPFA3V4QFnRVl1ugfzV8gVbrd0EP0qWAL9HdciurL+TOff9cF2em\nz+/8uYB8zlJU2ssKcxvbgVqVb+mbJ4yA0iefHtikhQdvb6E2BYVKS8GyT8w2\n/ArI\r\n=mHvN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0b513XBAqp1U1B6fLJ0v8rIc5Nig4MNYSo0HwbULWhwIhAJA1eASoR5MwawZEW4tKDWOVWupEfieEK+lQgHZr+0fd"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.4.2_1544215886572_0.25319609323309433"},"_hasShrinkwrap":false},"10.0.0-alpha.0":{"name":"preact","amdName":"preact","version":"10.0.0-alpha.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.mjs","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","dependencies":{"prop-types":"^15.6.2"},"devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"2ec1e34332bc08557d377799fc00da5b1f677790","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-alpha.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-GO2JTMOuoys4m3652dEv8knD+F36LMCA37aIgCeHjsF6hGkNQJcV68qmRDdEFy79lsJcoaa+me8SGc4AOWnllg==","shasum":"24f35f5bd47c81387f4ee99517fc5c2320dbafa0","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-alpha.0.tgz","fileCount":63,"unpackedSize":698740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfbgdCRA9TVsSAnZWagAAxaoP/0WqTGSXBs83Oiph+Vbo\nAXWZ0KJsihRvGUbZfAjCV7TBUiL0RCauMZQBOPjCZWIgI3t7/rto6gUTicMx\nM3bqYkz2OkmC0a7kBx3wuwFBU7a5/x9DOjBudMRrS+AHVTZL0TtzJ4+Yf7PN\nAMu2vmmCh1ieRM/EYZbxL+OmMKHfafAf+tIFQzDYvmloZhE5GWmMStMMDyvt\nfdwiq+/ZtqfeVOzPrBhD8rvi4aqlWPYnZWdM6bIHyAZhrRd6V5MA532KZ7+Q\njhoMDiaSeyMvlVNzyp9RDQAPt/d2+53Ts196MlFBP/mKqFH0xT7uPoAbQUwA\nlmpXZAqo/y/r0u7/iXp6Lhk2ucmG/+OuOJFrOYChLRNo8u1qQsDSVZvFo4PE\nYLHvQKP0snQMvV5D7i6IneovSh00itrBBqElbkhGYf29wrT8wRbBFULfNfRI\ntReaFqunTCUg5hzDw7I9Fj/mxWIwzLCrzzTvwUqxM0MoMjibGkvCTICdT2xY\n63ErVuLZrn9r68hCgxP33XTzaBRpRE1FEZ9yHgIA2ZkEzkU1fs6DF4xs1Yy3\nYZRtPthUI95eqoBPq1tVPBPJ7d7yTZRh5CADqqc2zbxuNrEtJF79KfqTAChQ\n1IqewJLSTu1j2Q/9lXE2sNJYtd5DuQkwGrojTv1W4cGGuvAE0N/W2yFRZoRi\nT7ss\r\n=lfgy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCymhtwYPeUPqyuIKBklbHxmfYdz0QGM1LOuKqkeiIY6QIgEGTm90mmB/sbz4xrmZN/CPlEkHYS47JheJ6l9vKWTkY="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-alpha.0_1551743004722_0.2035425710139782"},"_hasShrinkwrap":false},"10.0.0-alpha.1":{"name":"preact","amdName":"preact","version":"10.0.0-alpha.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.mjs","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","dependencies":{"prop-types":"^15.6.2"},"devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"1566a31f32b8657172b44b20b0182c9f56de67b1","_id":"preact@10.0.0-alpha.1","_npmVersion":"6.4.1","_nodeVersion":"9.11.1","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-9mDFKeU8SkepfCcjsoq/lODLKBtjgZj/aGBJaVXTNOEZV5XgOfE2TZQkFWDejE7w/q1qKUh1tJZaAeICxAKJ1g==","shasum":"0c8ee161fcd23839568cd52487d2dc07ca1b3166","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-alpha.1.tgz","fileCount":58,"unpackedSize":524943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgXcPCRA9TVsSAnZWagAAkvwP/Rv7B7A/NivRNKhj0+P1\n6bEJjlkRrsVYXHL4H2CK6bjZN1feHIFmCmBbkUPyCn9pRAkTMzUsF2QyJNSh\nc5VxGJZGMyNAcCb+BlfvFHpgajHamcqw+LB6vpbeEvf9Zxmh2gMVntAOuONS\nuI2Q+b2EkJyeNepCrVSDa/YdLyZDHc7JrSEoB6MljQTn1UAMZfVbUjTgGATL\nWsz9SuuTPDH01TPOgHXzlOrbvfPTiKtWJIcD7T5+gD+6OVqphg69wtVpCnFo\nGk8/uFv2Xb2rv3XdnaNKi2hWhKf3pwgnLDKOIJsHQJFJVGf5PPqx072Feo6l\nti1e39HE1XsE/zO82kKRQo4bzNE6dEJfM6wkyqo+Ecccv4XIvCX+bh6mel2o\nxlqYt2VxNmO80S3UTiLUJcepWTPSpowKSypRUykdxoQhV8NSV1jpzdPmTRf+\n+MDRTT/w8Sqqdr/iICF4LyRSNPAEg10Leai2mExa+EdwFFII66jWiRDiiI/H\nt0c9Wlu5ZRr7qCGg+rgjg+S8PaIaaCzD7jloCVyqWAyEuoeqvt7jMjjtila3\nK6tIST7dOl2bxCbvKMuU950vFiX+s5kMtXwA8A1uYg2+ovH/lSIi3Ol6Ko8j\njqLiLplPXzq2F85r9dSDyAISa+UF4moduawjEzKHHN8mfudfj4Y72ZxS78Cq\nOSHH\r\n=j5Se\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr3WxEO9KCNuZ/NcxvvYr9wpzsO/SytjiopMwxzRtY7QIgQL2w1fYfaf3GH/1gouBghCUwnb4ugyr6/BLFEaoNjSQ="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-alpha.1_1551988494838_0.3059095650216668"},"_hasShrinkwrap":false},"10.0.0-alpha.2":{"name":"preact","amdName":"preact","version":"10.0.0-alpha.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.mjs","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","dependencies":{"prop-types":"^15.6.2"},"devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"3b448bb516922426fd48c10601c6b21990be380f","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-alpha.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"developit","email":"jason@developit.ca"},"dist":{"integrity":"sha512-8G0UFC0Sa/giqI/jR3LIHzj0ohsIC4wnB+8+XdpHFEZ5GmtFLmQgkrrkdR0EcEAdd38geClUSj30H8AEIO4OqA==","shasum":"61ba4f2ca20b75352ad5ed8aa239302df83dae74","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-alpha.2.tgz","fileCount":73,"unpackedSize":717092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciqnVCRA9TVsSAnZWagAAW+EP/1zw0RjeuHL4P4cph+C+\nWmjXkNPwY8UYE1UCe/iRkUZiBaiUtPnB+XkwZoQ63RoQGimLMgqAsTG7Irpu\nn8DtoPJe9su0Z8O78uJI14V0IWn3kKyhB9Q4v6XIkusPntMSKPbtaEjKheMS\nTzj4YxPnWpwv/B9IxLXojaxii9ETDsreAS0edp25vphhJMibhArie4++dtJf\nifGjvWSgcyfMsnlqUxE+ZKsRM8GFp7Pp/9UAXBxd2lnZMDLpXjP1Pe35H7vs\noqN/tlFNv+DsKLXhG3Xj5y2YvM/8GVioykBhQKT6NYJoxY36DNXNpHpt8Fa8\nCXXrIWZ6sX7VSDrA3cAcmFIeICJq7LInZiLjaEJQ52hmjIfAR6hfkHu66JuK\nN27pYoDK1hJRfrL7oOoHdTfOxGrNlZpdsLCB2GoChTxycHV9E428egaaWH9B\n6Q1z+EPGfaof4dP6vJIAzjPLNuAoqFeVuHta8M1Yk8tNV/ZE+z9pPT9iy+YZ\nTfqbpSkM6L6pVxOJkjNAoXpI+0yGVF6xX+8uaPtH82SQvs2oizwbB9TcTWbQ\nZbJtZkRTuIShu0MgS+KLwegmWCbenOsLHMQlu4aBGwnrq4za1X9bbf5oYwI7\n2geVfZjtNiy5EABwAnQKSN+Kmc4R6NPvZ7M3AjMj7cKO7drsEvbPSEiQsFRm\nlJ/A\r\n=P8dn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9IOlx1Y6AQIiKYz58/4bNuXqloWW8g1siZSXs7up0QAiEAtKdAlC8Or9k43/nfxXMeOsw4+3iDkXgmFNPmKGW8EZ4="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-alpha.2_1552591316182_0.1657338137459412"},"_hasShrinkwrap":false},"10.0.0-alpha.3":{"name":"preact","amdName":"preact","version":"10.0.0-alpha.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","dependencies":{"prop-types":"^15.6.2"},"devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"57c288b46c96ffe136bbbbf561b21dbaa7707bf4","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-alpha.3","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-0ZDexQ/FvZmMbyY7pn1J2hZkWWozftD+980R7LuOo3fEOM1YaYlq2jjOnHz4E4Qf/draHWX/WpcC7QnuEtOBvg==","shasum":"7c3c50b73e8a6f7096f2ef9284b22b09097e4853","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-alpha.3.tgz","fileCount":68,"unpackedSize":581811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJco60BCRA9TVsSAnZWagAADqsP/15JZzxlGmbueoNXTUAU\nNCtUGfj/cS78xny+lSRcx9g8/hjxo5ulx2Lo71GnLCCiF+69hxeb6rXjVdqu\nvs8b0N0GKjE6jn9K5ecLVCs9RmXWJ9qZH/tW4PeETKjdCKehA99+nPDkG3Ae\nx0ViHfaa8LOXvJvbvOby3SyWo62Zk+GOnLTROMdjUWxnC/o8eTiIi8L9HTyE\nZxZaW/ZTON7e5CMTyDH1A5xKljVeh5RUCu+s4gM9vzpkZnxyZ8BeAnq8HXt5\nw2JR0jx6majG1PcrUcC8G4dFpRRdNE4LS8g2fVuh5gfA0jMWRmo0q1AI4Zk7\nwvO4EVQj4vQpvQzwJYJVZf48R0vERUynZysV/mittilbBBbZPnF0dRpteUjC\nk/5lPl7v9G1pMreYtTN71WPklJdx6UnJqB7bowx3sUhapB2ggP6yo/kO6Qi5\n4zAJTp+Kis1kUEXPT5mBaB5E4oxM1QUUzpSxAYNDZdjA5/R28QTH/u7cJNmn\nCa03J5hzMluVWJ538iWdGLWY6psoQnRJfITtSLkzKHWTJ35e6nkx+Qr8w0zS\nRb/5ZbFJyzkmECZ3LY8LCq5xDsjqWU0qXHlMKQenNel7DbKe1BFMp0/pQO5u\nSLwwTIjoQ9kcO5uf9ZhItKSxn8rv/tFymxI1BM+N4A/uPwzLgae4rAU8sxIW\nzmDX\r\n=FZJG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPf6nMF8a9o2AbOwPsClk+fmsY0avUCub2uZq8E5ctQwIge9p2rAVH94QM8SsHK7qheO6nX4v/dm3fWhSNOmXKeyo="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-alpha.3_1554230528290_0.20739309418344343"},"_hasShrinkwrap":false},"10.0.0-alpha.4":{"name":"preact","amdName":"preact","version":"10.0.0-alpha.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","dependencies":{"prop-types":"^15.6.2"},"devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"eec1beb69d2a63bc44af878f0e4487bb4a189b8f","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-alpha.4","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-HD8ocvxID8NjC6m0rZhY1HbbBIHBKw7E4/0nu/zulPcGhgXEjm2BD9Tt8wQdoa/nea3APJ72TxRJSg2oQmU3uA==","shasum":"c0cf81771fa7aaa3e71adf8741b1e341e2cc4bd1","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-alpha.4.tgz","fileCount":68,"unpackedSize":588825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcp7eeCRA9TVsSAnZWagAAu7oP/1JyA1ZrwQfmN4Hc0axu\n+dCcs0TXp4Z+mkzuRe7tcgv5vxE8mnfNIyPsme4BiTiEPgWEsbgpCCOQnCP9\nuND9F5A9EPBMHXGOnc+KtF88cQXE3U4zQi0JqoKHeIqLUArZKLp+53QiCOVh\nzZoowgd2rfm0ECk0yUzgTb2tQE9mKei7qC7NlZ+QYZiOf7iwXFCzRwGIWu4v\nZEwrTF3OQiPxbpPmQs94trljuoiHfY+Zi5wxTteTNL9GOcViJpc/uX6RWMIS\nxuK+pD2XXbTwR5+QjtkOs0H2s1T4MivoDbC2qcH4lIwKIPa65NLKyZnxU4Bs\naHTiARYAydWZjQdYIceixGPta36IgEcW3/qSw3UsKMfoAEadggeCsdjMUrPW\nFxHp4JHfqZoG5LNYoJIoFJZ4ex1QJOKBg2sDftPubNNOHx4D5FDnBiECCSBo\nSQRLny2z6yjAt6OJYEbTmikgZs9nLka3ACg+EYxqMGJECViw+e26HxPqNDBW\nUtdco672RAML+kjxI/HJlOlUzmfsUp7HslrawoEWi3LXjHJOyHxAPnVJn8jI\nmWpiMC/x6lGk+Sy8SuoBSEZuVVMz+Cz2jIo2Ex7s7iqhbLLwbpdhSNkT3L+q\n2I5/Y2NVoQJ2s4TUmOInleTzclCNI4SrH1TtVu4M+KUHl0phP5urI0TradoC\nASMQ\r\n=Ahgl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBokXGCsnSjDfwr8BxAw0WKxdlhxkp9EYajhHCUQpN1QIgaeeDSE7ICgyyJfBlrneSbd8sxoAxGsEQnuqT0sKgXuE="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-alpha.4_1554495389996_0.824829669648407"},"_hasShrinkwrap":false},"10.0.0-beta.0":{"name":"preact","amdName":"preact","version":"10.0.0-beta.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"4bcdb864e47462effa7d20d2cd3cea0cc9f624f9","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-beta.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-BKd77y7ZpPLybjtM35DJtzXj+sxlAt29MCMGOJnSrsv1jt30aE/wS9qoU9nL8ih+yhal3B22mGAvuh2mGLAFMg==","shasum":"8d53947b167449c09a678fefc2085c0f56ed34bd","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-beta.0.tgz","fileCount":69,"unpackedSize":607724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct11cCRA9TVsSAnZWagAAdx0P/R9ykhcD0MXraF4y9HJ4\nxwyzRlzUe2btP0ybfOTXQJHiVyZIQdg09dQNok8sTDtFisFW4HGXkYg3S45K\nMlhrriJ1seAYjDdzBZRUXLH5M/rV3RjdJxltJPPdsLg0Tq73gIxbeo1rKOUv\nMvB2eWk8DgQJZAD1u+2tMCRkUJaKZRWisLxFgYNkMBZx8kWDs9Z0n4zRSu27\niEK84kToMaMl8uMq/bdwKdgfklx9Bs3b7v9dzLIG/UxTd1Sl7uDsZoqRxLw2\nbAzeY+1jJLXwmvjuNMzMPI7Ov0HW4yh2B0nZGOs/V0jTKggATxcyAgqczcWU\nV1JSRAfjnu+Gfrn5mXTeBriJjmSf3X5cLjB9Wlrp1GqtuH33/Owx3HVXUuwP\n4PGdQ2427Qa/bPEdbn/L3H7DHeibFYHi2Yt3/jq10Pu3NLmwrgJg92rEOsrc\nfu2Kwo4wRtA+fF5fhl+d4hFmhXZ7lGW/UFDXvg1xP/Rtk0HqjfLL9EdfHB4s\n7UiOJUMNs3vGqpwXQ1UXusy+ZbBR/Ivharb2a7IpfZaegcRB6zhLZmwlU+Dm\n/NP+ruP4sV/ruUchTpIxtCA3BV70eBxg0GHx5l4A4abvpeOoqhk+6SVIP/80\nkAh/jonuQz2Yh2VNoGB0//Pj3Pir3Y3xyOfcAcZVqox5Jb6FnKNkT0pTmv0Q\nCQX3\r\n=w6E+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIByCQbfDt23OcyO+xCsISi/ETGxqLaU11tovOvqY2cY4AiEA6APokdf28Xw0XlnUGk3h8mLr0X1w27vNgzoYatZ0pZ4="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-beta.0_1555520859824_0.17721868875856028"},"_hasShrinkwrap":false},"10.0.0-beta.1":{"name":"preact","amdName":"preact","version":"10.0.0-beta.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","test:size":"bundlesize","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"^6.24.1","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","bundlesize":"^0.17.0","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"^5.1.0","eslint-config-developit":"^1.1.1","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"bundlesize":[{"path":"./dist/preact.js","maxSize":"3Kb"}],"gitHead":"e206b07ad2d38958eaac0f3179d4bd8826fd92d0","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-beta.1","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-1uhj3JXOEzEPUof5t/iQW5heEvTOpexwS0FLAjJQfgfT8OCXICyzI2TwkYyFJ+W9q9GsDmhZgFagH2G0akFveQ==","shasum":"f7d524668db72ed74e99d447f09600fa4db0b186","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-beta.1.tgz","fileCount":69,"unpackedSize":613790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcy1e2CRA9TVsSAnZWagAAzB4P/RxJa7BK36cY+smFZSRU\ndGddJ0hU1LEOSfB7vVUa15okGJV7aGM/pn4UyFwGWYnqudpNHWajmcx+fb2q\nAFd5nACagXU7B/de0GN2Zpd8/5Mon0DImCZnnSKj2PErIRyvMMcPd1zQNkqZ\nVsP6PBgsXWdYxnGDQqce1sDe3jRdiOi3L+rn3iEkYlOG0BWygD/8l5fM/WZ/\nXlfUX1pIJlg9MPqC2lBv1VisizAgTznRUUxE8Lr56Q75morP8ORYfp0u4PNf\nXyxXOph5TMWNlzKnFanWZuHelKy6uu3W5C1sILkEhF4q/XuFRIcJBwBpW+5H\nlkOt6QYFb/yinRY8eUM4jeot6BKpntBaKWFIa2PZsmfkc4Dr7b8hYvi7irnX\nDg/QQV63bkIsY/+kaNU7b5qRSixA0CkqGJpxe+O8IxLbC2jg4tvtqaztrdFZ\niP1QZxqq8U7IQ3Wty7Bty75DnmSH5p9NYTXc0glao1hS5vIikI5fOe1RndA1\nNmJ3DyDBdgZuLvkT20Ilvoe/7WWD+SAEZFodg0CznN890/7iIm/8awbGjiEa\n05ZIN+X70sz079jGnnf5gzsTzXcans4DuzUVC2wKCOwcdK1jwImCYjhSq/TU\nFescKM9jBO0svbJaifk1c7qcevRz6TCfKooVivx+EITJs67JxWlqMQ+1VtKN\nrcD6\r\n=CamB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1MgDLzNT2Bl0BggTAQVhdtzKddWUv1260ZtzzUMHNwQIhANr79DGTo0dlg7VYDwDJX8q1BxUjqEC4/URhw4uJ7W6c"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-beta.1_1556830134309_0.15676413096740238"},"_hasShrinkwrap":false},"10.0.0-beta.2":{"name":"preact","amdName":"preact","version":"10.0.0-beta.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs,umd","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"22a028f958e5d544b2ab09ea59ed9403a04edf58","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/preactjs/preact.svg?branch=master)](https://travis-ci.org/preactjs/preact)\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n- [**Proxx**](https://proxx.app) A game of proximity by GoogleChromeLabs using preact. _([Github project](https://github.com/GoogleChromeLabs/proxx))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-beta.2","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"dist":{"integrity":"sha512-sKu2tdECRcmG8B2Q0GIAhTR95PhaWy15RkYFgpzfkEQLo7qqnE5lYQO2ccHNTfwuzj0LVPRdG71s5QjhnRyVbQ==","shasum":"659b6520eb41d5a3d178a61b3311e6ae79d8cf56","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-beta.2.tgz","fileCount":72,"unpackedSize":647084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8RniCRA9TVsSAnZWagAATE4P/ReJg8hnCXPoiNEWnYpl\nCxsvpvs5IHdiYzNN4OUoBTNmHtFURTjX8uFFwo0rtM71Hdd8UltmEgo9OdAU\nFMEiXrZY9MZNgv/999DrPjjIRxP9E3pH6ZZQezkGwK80W/LXp5SWEe7Sa14C\njQUe4wDWCBPARaWNJi0LrBT/xDNGXJFIxsWk1lGvLx/kQ9cqDIIgs30hKUMt\nLAGv0bnNnj7pmWlZ6S4aYeqbqb6GabbcSkV23hoWqIn6sW3XTljsDI0bTE0a\nlbUzpTUMi/Cpf6GN0d6Kdc7oRBxxAx6LGGZCCjaUcIZ0ywC2Al+xFGz3BY8a\n31BWMvA4Pq5J2ergeAQIEt96F6yBiLoNN2dpRe3IksrOpYP89B8PhF5cPrFT\ngyzrKmZJycFuXTtP+asRaBTkO9H/moB4wTYPb/7NwC3PRqceARv20CfisxZv\nNeyduTy1IPl7JTd0XZ62MGb2b9pFvpFfdBk/nnTcNJykvTgR991pBKl2ZcGy\nIXe8x0+qx1KamLRpdvJAgagXKqMnY03bZK86+ey6q9BLjCNEYgMg0yJCgIxb\nfPozYyPD/2hVpSNnHxLNaSeK4Cbb9SbcMxUKsYoicyYfFlrXTnCoVQY3q0Zi\ndB/duGDo7RySbRhLjuMLg05MXUj2AaLOYhUTsU7zYRck4VhT5gJ6gqMFyy5g\nA7BE\r\n=a2Hx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCU//Bty/FKP2pqxmnt6LeWTQ8AjtUpwjgUP5XLSf3X/AIgSnVBjrpozMRpQYKZkR4CVFdBA6iPvJdl7sZZzZtJwKY="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-beta.2_1559304673783_0.31605518883103056"},"_hasShrinkwrap":false},"10.0.0-beta.3":{"name":"preact","amdName":"preact","version":"10.0.0-beta.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"7fe6f21aff0fd2b83dd5a53d1cef35a51a725e5f","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/preactjs/preact.svg?branch=master)](https://travis-ci.org/preactjs/preact)\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n- [**Proxx**](https://proxx.app) A game of proximity by GoogleChromeLabs using preact. _([Github project](https://github.com/GoogleChromeLabs/proxx))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n- [**preact-charts**](https://github.com/pmkroeker/preact-charts): Charts for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-beta.3","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-JDeA+CVFBlv+r+v/tScG8hzOcOedXfBLUA5IhStqpfc7rPGY3T85pdlu4aGo2tV0AoZzQfO4LTnKkQEnKJ3UxQ==","shasum":"dabd0628d941f9e7908f68bb008e012ddff1b28f","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-beta.3.tgz","fileCount":72,"unpackedSize":650413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDSn8CRA9TVsSAnZWagAAMLsP+QDht3tprIeNeDl2ZIYV\nv/VF4jPhNwiE4/PcQN9JRxkNEXXDdeo2PeK4U8+8yhXKyxRGmLjSNChAohbn\nETHoqiDhbFSCpfiH7tTtTp1h3RhhQohlH1UmzxV6dHkhhFa3yo/Fre9powiB\nZujCnj4nShNV1b2ZZBK+p9GL1PC2sbjHonTX4zAMofULWnApeH/z0s5s4XMq\nd1tbmY1fIemKgUKhntwGSY5RacLbCqoVZjpvEUdQvYFmemIQ7cig9EoE49aM\nhJ4BQh/3zKCe8Eozm7WkdYocZDrgKxAfyH+FVn7QrSV2jhvQkeq76SbmWpsC\nwKGPsurfialtfGHB+uwNb5wER/ze0XABP38Rccm1+zvcpcoQcADxK+pzPmFt\nXcJ4AHqkb2yiMkC51Yz70NlCx5DApjaInAhzCX4w+f/tZ/VzE26vM3Xf8i7G\nCcM0/2Jt8U4Is2x2FoTjgxghWcu2Egr1ULBNrLT0ZuiP/JVlIT3dSsz+B1F+\nE0/JF0jjbOnXh/Cw/Pr3HzywRtx4GyuXCrTEiuSXYU5QLqvnrbk4ZGjxRa0B\nRhvKKpaNbIpe1AjtMf03VLcaf2TBC4HfrEAVqGAbCNYTeqUaClYW47xSLPsq\nF6bfBDX7jf7jUYKjau4GCY/Wx6aIXW82lhZBKduAxGuNbh/4hqPrTfdnJUcr\nBRcM\r\n=pykT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDinxjKiaeAcCWdKfQFwYJcQqCO3oL03qkUggIJpxh2cAiAVzawQwYCIMW6rqkBGmkVr1ymfc585gU1Y05uSot3+6w=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-beta.3_1561143803767_0.2635183323839134"},"_hasShrinkwrap":false},"10.0.0-rc.0":{"name":"preact","amdName":"preact","version":"10.0.0-rc.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"95aa28f90b56c023438fe106150c76f270798578","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/preactjs/preact.svg?branch=master)](https://travis-ci.org/preactjs/preact)\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n- [**Proxx**](https://proxx.app) A game of proximity by GoogleChromeLabs using preact. _([Github project](https://github.com/GoogleChromeLabs/proxx))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n- [**preact-charts**](https://github.com/pmkroeker/preact-charts): Charts for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-rc.0","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-mOOF2FoSt52uYPa+n2cvgI0NI+yo6Rxyamvu5z/8GHod3UhtExWhBcOeTawriR4HiGuR5VHENJEJ/dtBWMZZaQ==","shasum":"084316631ae6f0a965e889e7715cccb74c4a5d6e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-rc.0.tgz","fileCount":72,"unpackedSize":674088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ5huCRA9TVsSAnZWagAAdA4P/jhRON8m/OWg+N1M9hAc\nUhwr5UeSQNquKIxJbC8OgSKdcoGHyLkrbiG+D5vbjgNMF0Qgr34AT3ETBvGa\nThsDSRYqGI2Avv53dZyhne3T+Ui1duqygwFwJwLpgBTMwx/kWi4O9tO8nySH\ndFX58BInRXWJRhk+VAu8E44bCq44S7WDawAxev80EXrsKIjLktEQbffZU0te\nDbaw/q1fuaseVim2Hj814k8BEdJwkiNaLw7HGKEJ54lMflMVyz26AxKpCjr7\nWqS44QWy5IVx0+2tAy9hxCLI9LkOSq4iE4bgkMXe4PNnJWftYE7Uc21GXBlu\nx65pgNHK8G7tnYFh1vJNIgVqNUCYnzElSzC2D4xFL2CZUtdTBJi8zT87fy56\ngWp1LZwGNBEnOU8D2zaNDOv4yFXl8l/bOxvb4M+4Fp6B891E7O6BSdvGcinE\nMNOEZ/nPRZsWOMeJljZEvD8/s6QhXRTkwIOC7NhX4xhyFBKFuL1ZKk17xDXn\n/MsyazxJ3BjA7nYAkQ2qnTRCRIMG7geOK1LH+ldZN4TwykoW35rPUMck8D0Y\nMuYXkGU8Nt46YITnxPFrD81jVlYBXq3lHIrBqJX+JIXzeQikVpK5crHaqjtF\nG0H2HbBLcUPDc52pHsTO0NpjDGGMOWA4YKOcJHgNGw28GJIIQULjs02Ri/QF\nDqGN\r\n=P5nq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLSC6NfLDPlnoZwrHcXleR3RrTgIf8M4WwKAwihP2yKQIgEEdkW2Y839aCP7MEx/vXoTe/+mBP+oqGC/ZdtOtIxhA="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-rc.0_1562876013402_0.09616019959928557"},"_hasShrinkwrap":false},"8.5.0":{"name":"preact","version":"8.5.0","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","unpkg":"dist/preact.min.js","types":"dist/preact.d.ts","browser":"dist/preact.umd.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:umd":"rollup -c config/rollup.config.umd.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:umd transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.89.0","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^3.1.3","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015-present Jason Miller\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"preact@8.5.0","dist":{"shasum":"05690de3af035cd8ad393e8b4057b8ab29aedee1","integrity":"sha512-S2OOz+lRjfbqDbV5LOIcJ6yfYvshDtKvvsMwaFW84wuw4HtFUYH67T+hnWhdCDYtW8BfmyIg9utz16s6U80HbA==","tarball":"http://localhost:4545/npm/registry/preact/preact-8.5.0.tgz","fileCount":56,"unpackedSize":978252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRIIwCRA9TVsSAnZWagAAFiUP/j+wGH4kdXgyELOhS5qd\nHP2hzGFDVm6oViJKM4AboDQJtoqirCQHpfjB+QkeiPn97HHEGfsDxbxzdMMw\nGiaQKum0A6crCuEPxohR7bsV3xN6ANLnFWCBsQ80aLZ50lVUTkRQRMAjgEcT\n5zl1CaS9GSSmE1B5fMVTWWFSVU/mbGPcAkXZMjwdqci88RHf3mtgn8IJ/5oC\n4xiZSobSvIBUlv9cBqIVaflvxHl9xZpdqzV1iddF4C7Ou71edxVjWBwXdEoa\nL8tNmJmtJPEUR4h12ZAjQFDp1wiM/iBbT/5yXGE8rqlDxtDf1WLtDI2sU0SK\nYykUj3yCNwCT9Li7A6O6I0cTQu8CKIQ8B7JtrBjMR/PzLQFSsxXBYVfc2IB9\n5VcuUpmGvqcnn4l36dPzBQEZlkRQSZ92N0L2WZtkwuN6uTqAOP85XSQ+FjyD\nk1kuNrwXimBKuL4g7LiClTYMRylwcA8WR8T93Lc5DbXMQRcUlAqhQyE/2UBf\niTI2jBeJmjGyUJgyhmt56qaWk2Y+5ltXaq4evb5/JpAgrO0vMEsGbQ0B/RYo\nCt/OHE/LAHhZ+/OCTuDsJS1PsWoT81tXqizE9/wQ5KJTeew7b7tZOn6Au5S/\nyv0eQmO6mqk0voLz60hLauHhFFPP4MkNFGhCr4Dt7QT+G2QRuQmwNXOeLuJg\nQE+S\r\n=36vW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCn0ujGzdwnThu9HSRBi0eCFunx+2lGs5QHORpDgof9GgIhAOYMIEO5fsehLX7jBaOKl/TA1Hz6iCeDzOAotrwSfmjV"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"harmony","email":"npm.leah@hrmny.sh"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.5.0_1564770863260_0.5179813670573445"},"_hasShrinkwrap":false},"10.0.0-rc.1":{"name":"preact","amdName":"preact","version":"10.0.0-rc.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","flow-bin":"^0.79.1","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"e7c39e8528e5f407f5accb91efd49aeefb9776d7","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/preactjs/preact.svg?branch=master)](https://travis-ci.org/preactjs/preact)\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n- [**Proxx**](https://proxx.app) A game of proximity by GoogleChromeLabs using preact. _([Github project](https://github.com/GoogleChromeLabs/proxx))_.\n- [**Web Maker**](https://webmaker.app) An offline and blazing fast frontend playground built using Preact. _([Github project](https://github.com/chinchang/web-maker))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n- [**preact-charts**](https://github.com/pmkroeker/preact-charts): Charts for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-rc.1","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-DyG8ySCbrQZ8w4cSyxnofM6yH/hzyYLHmIrE3xL1FjSCX4DpvVmP7DTpkV535FSQX0d2zOscb7DCIY+crBtxow==","shasum":"bae4419f8e289c327504d4ee6e734c377983548c","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-rc.1.tgz","fileCount":72,"unpackedSize":679393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdRJ5lCRA9TVsSAnZWagAAdW0P/1LRcC3kme3I27EBoRS3\nL58mBrQ/MxxMH687VNc2KOq8/oQnbT+PfxNQMvrNJPNl5t1flutUnjZWoezX\nZnbmmLj4tlA3PD37X6w8upDt6XW+dRIGUCYPioUT+vaR+U3m4/10wuUon5yO\nWg/IjspZ0HiauScdPSAev6s5hGeKKPZsjcAMWHT1ahSCU94Hnny9aZvzDV+J\nde7THknOGlkxdkOteJ4AL46qanFTZTDoebm4mzIZOHgk51RVnne+CPLbMkLv\nJEXgJP0TWyVSzkwRmnEgKbd80f6IE0CA4aoV1ye0O7WocKNy4fNq65OqVN/v\n4TbPMsxqQV8QvxRXQ8cAfW64Z3fQwfeJj40DOQPa7E7pfac3wvxlvXEXdiYc\nfDAw2VHPrkWDNUHJG3amBq5ZA6LqHEtD/Ewd/+LgP2VOAXMucCjWnMWqdI99\n3+gDp27jZBPYBqClYzpjO9pRouG0ESbnWEFHpF2f41/9oOJGQBsvoewsCU1J\nBhJMV+iPv3fK6N1u+StIqGDtssJ2iA8riswjMo7VqQJ232sTUPW+4zeKMhjP\n8dBg8jt/tDM7CdCHUvYsrsxuTMjeoc83nEhI13DfnJzxheN1s76pUaGzIdUs\n388SNBoIbeseE2QR/3vTbNZTcQW82r0gHhr6Z/cJqKwQSo6n3+Dbc8IOgNkR\nEaZt\r\n=0QW8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOurPCfiTUhoLJ34/QrbHP5OFoS619J7ZEuwB0rV96QAiB90nHDQFV5wwtQ6w0pdK3U3KCBOtOIk0LoxRy6S8ZReA=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-rc.1_1564778084833_0.9974358457635735"},"_hasShrinkwrap":false},"8.5.1":{"name":"preact","version":"8.5.1","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","unpkg":"dist/preact.min.js","types":"dist/preact.d.ts","browser":"dist/preact.umd.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:umd":"rollup -c config/rollup.config.umd.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:umd transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow test:size","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.89.0","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^3.1.3","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"45f5479de020982aabefb817ded51032f0b7b2e0","_id":"preact@8.5.1","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-YVnCgcboxGrorFVIPjViqkEPOtfYVDxn5GOJuXHQZiOty+JOw7A+1xJytv/mb1O2QIIRC0SyT+kapA7Wj3jdZA==","shasum":"3a86cf5f3d4f6eb3349fa1f106ad59756c2af0e3","tarball":"http://localhost:4545/npm/registry/preact/preact-8.5.1.tgz","fileCount":40,"unpackedSize":630493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdS9PnCRA9TVsSAnZWagAAwxsP/2OVVXRxrkUP5L+/UjJy\n22TkP7jsmGY5cscocNJXEgHgA7A9Kz2vO5VrlqgfdMTpvAIO78SaSs90n/W2\nTy2rjnZZd1wgkCFTJ4E9bsDUlsxkw7NNQK2C5+zj3PYAXoJOmPQtFEKNnggx\njqfTCydzwytieKNlEX93awYwA0mzu4z69aUjxLtuuPPlHM1QBTIuL2cB9fnV\n62br/l5fqROft7pPszNK4dMqm4Q9rhUaiFemRRMv4xg5kixmFoalpfelpmSl\nWolOivYrgNHS4FjrJzAh0hAF3Zt1pdGM5lidgbXXJmzyeh8eUqAytWufSIUH\nEf8/vD1e4Eic87fdYE2KRV1O5z7JS5im4mDHdxORN+9vXAH8oC8vH0quhOfx\nMyWf8LSIi5brz5CD5/PmNfTuaJIfPkbT7E75m6Sz9KJqqjBwmkI4GKeZwkQ6\n4y1SrCJq/aui1gSjRg0ObVmYGEevdLY0hmXw30TFGI6uTSPEg9vx58mzFSMt\ndmwYCUIVq2Gm6WToxriZ1pifHLFkzojw59hA+3sgmkl1RVE8ynwHsKNPf7tg\nbaXKRaG8A+3Zz2SieQgIh92aH+7NMRi8C7LSl4OTCzb/SqUmK6vtPMObWMNV\nLy/SMD88xr6IYLmdhCmZAee2vp7LKH1I3XDrE3UFMzwysftUGPzf7fbGEwTR\ngjcF\r\n=yC6m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdkPVtbCqR2Q+HeX1tHmlz1R6+nvJoeT3JnIpR71w/OAIgS1jO2scjmxSk2xA6B1On4Xlg4AlO2jIV3ahOmKvDw0o="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.5.1_1565250534951_0.5421005330515134"},"_hasShrinkwrap":false},"8.5.2":{"name":"preact","version":"8.5.2","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","unpkg":"dist/preact.min.js","types":"dist/preact.d.ts","browser":"dist/preact.umd.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:umd":"rollup -c config/rollup.config.umd.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:umd transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.89.0","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^3.1.3","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"b54401fb18098d990be9187db9764c39ab6b595c","_id":"preact@8.5.2","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-37tlDJGq5IQKqGUbqPZ7qPtsTOWFyxe+ojAOFfzKo0dEPreenqrqgJuS83zGpeGAqD9h9L9Yr7QuxH2W4ZrKxg==","shasum":"2f532da485287c07369e08150cf4d23921a09789","tarball":"http://localhost:4545/npm/registry/preact/preact-8.5.2.tgz","fileCount":40,"unpackedSize":631471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWOdUCRA9TVsSAnZWagAAkhoQAIxI9IzRG/kNTfxX/jYb\ns13vLAGB2DU1dIS1hyxkZ4pdpV/8F9lfQIHqrwuFV+FUvyGRSMIk6ybTrnKg\nW8tOMs5DJ83jcD6KPQQyfvJkdejP755/wmZn0T6Do4sqVMSA91queWuRjeTw\nd53n5R8QULxOB1bwt55Sq8+Xn6tyQQazizBhTfFu1+EdY1sT38eC5/x4qOte\nu+259z5iYi7gugKsm3nhnnZ2SweqWf8F1ee7ZQ8dI/D2YVCaWfNbNYbTm+Jb\ngBqzw9kowAtLYCJlI+8Da8yjsvcQIJQxjCrGx4TRov1vMs9l5c6lCC3Tg7FS\nHb266KasA363PhnyDGONGCgaRiLSMVoYIhTFSzEFGXM6wKbVkvlsjFBlWvY4\nA8ZIYh2gmqDAq4ipQc5okbj7lpjA1cpESHOQqvXOrF6tNGeXM+FHynga2yw1\nE+QdIIJ9cq6qaZGVNag4DhJVHYUV5MgaPagEUSHnXtL6EbFzoXEhl0luJ6bX\nsDHLc13XeKeQvvxTQgCqt5m8hcR31mmzGBKvRbdSFH7tYjrnzZ0a2ENfQJSO\nveC2E/arbva04ossGAb8/ejhNqFUwm6VICyUpeompGFmBCtk24F8WNXBjOm/\nyF888GN+5mPKjyiO2+1n9sAWLkgiC9Zy1RqqAx6EqSMJ4MjUMOYtv74G3PxN\n0Dtc\r\n=LFK5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1+z25h17lrK7mrqYFZDuYHCFbK0XN3tnkxhJo+gLbSwIhALaE2jvt26Ut+jwrDsBQHtmOC9FepgbtO2W6qqriLscA"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.5.2_1566107475724_0.5319568892611437"},"_hasShrinkwrap":false},"10.0.0-rc.2":{"name":"preact","amdName":"preact","version":"10.0.0-rc.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"9fb01cbb6a2e654bd0288fcec24ca70ddf94fa96","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/preactjs/preact.svg?branch=master)](https://travis-ci.org/preactjs/preact)\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n- [**Proxx**](https://proxx.app) A game of proximity by GoogleChromeLabs using preact. _([Github project](https://github.com/GoogleChromeLabs/proxx))_.\n- [**Web Maker**](https://webmaker.app) An offline and blazing fast frontend playground built using Preact. _([Github project](https://github.com/chinchang/web-maker))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n- [**preact-charts**](https://github.com/pmkroeker/preact-charts): Charts for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-rc.2","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-dM/ZK7ZIPDNPihNPcKmjK4EItcF4XH+mBAgcQ0JvMLzjvW0ZwCwaMcA5yBz8nB5WRwsm5zamgO0Y8rgAy8HB0Q==","shasum":"267d0bc2529792bb7c8802fb5a9401ac4fdeb53f","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-rc.2.tgz","fileCount":71,"unpackedSize":705251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddqvZCRA9TVsSAnZWagAAik0P/RFKr4wG03EOUUxojUNf\nTiWfQwTRGImjaPppfYD8Tc6lXtdJXtPgbrUEP1DhOaDKAaQZkfp5HleVwUoW\nskE2Bj1rwOQHIRhy5/Uyj39iK3cpOjZlkGYbNVBAqaZj1czivPD5PaRyvzWj\nS89xYBPWLMpxyRKKY1eNVbL4lprrCbeeiRLF5UGHwPThlKv6RHhbHss3Nrzx\nIceA1h9h2WsW4rdRpahcQF6Ko+lLygTHjwtkoaMyiYnrI8vqOTLNyN1TN7B7\n731D0FXdP89wuMQ9tkP0D5nsAndAcEIO2hifx/suLKDbICassdwscIsssJlh\n9w0ICSkuiMua3xRTCor/sMCrqPy3MZAOUdIUmbv3HpEeSsZPGwN/bakPpVYG\ntEZyykGCOs8LSHC/nBoS6EUiVxopRCswk3ckniV1nLmWkMN8129gBM+YoJMt\njyCDF14sfc0trUJ2tj7yIlgZ3QgvEVAPNHEn40hu0N82MdS4OvEIfjusU1NC\nFiPo6WxAC2ZgPXhuXUGcvHDFVpovdM9vVgyg9wg7C4Exr96YIbBWzVreyKsV\nGbromGfcUP4+bljCDBPCo+oRsAGvuavs+IBr62UkUlI2Kb8c9Ey6XpzTv7UJ\nYFBaS4lfju01HzlCI+wU5cQxttqJb8cyMP0X0mBcx8vnYRM5wE/iZtRCzY0T\n6PJp\r\n=7VC4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCltnvmDq/udsX77WrNbYAXUmFvjVev4dOx3ec3RG5p2QIhAMw+At5A1xR3d9x5Oie3C1DlzAf4NBgD3I6dTqmlowUe"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-rc.2_1568058328302_0.515304081564985"},"_hasShrinkwrap":false},"10.0.0-rc.3":{"name":"preact","amdName":"preact","version":"10.0.0-rc.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"96a45079713e604097d03573ff4333abda1334cb","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/preactjs/preact.svg?branch=master)](https://travis-ci.org/preactjs/preact)\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n- [**Proxx**](https://proxx.app) A game of proximity by GoogleChromeLabs using preact. _([Github project](https://github.com/GoogleChromeLabs/proxx))_.\n- [**Web Maker**](https://webmaker.app) An offline and blazing fast frontend playground built using Preact. _([Github project](https://github.com/chinchang/web-maker))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n- [**preact-charts**](https://github.com/pmkroeker/preact-charts): Charts for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@10.0.0-rc.3","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-IvDc2AGvHJncEtORciLDzpluDF2MsZqf9eo6xHt7HVY4E6OvxZzAePYJtv3siVdEntxmB9NciQpbToT1APqJYQ==","shasum":"258d1bbf11744e0460b8681422cd6a0c18200df7","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0-rc.3.tgz","fileCount":71,"unpackedSize":705527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdd+k5CRA9TVsSAnZWagAAbWMP/1NqWbs2xYBACoO5X+k0\nLFzjkxcqs5CLXIeva4QEzGvguBsmJ1hBDKW+xjbE5rSLz25643SDv027/Ep8\nefeYavPKmxW367DavRZ67l0ZlI1iYiQh8+lGrhG1hDDN4rQ+tBCpmPgXHuTx\nliBR8geA6tcDB20x7m2MrI6UemCeRQUzHburJ51ED55FU2NDv0DmsG0zrlYM\n0PCrCVjXDVVD8MuPEvRBA5bU9UWGI+2pq/UMIqm9JMt1w2wp7wdbYhtrNeGf\ncop23tPsKGMdbSZBgtY2WbrhTmqV5npCgcF1jCe8ZTZMdbUlpgXyqgMenbDg\n96JNUE3jw8Nep7as/vcyDTvSwXEkM9OrcwicYzI7iuMX0A4HvVVqTDBqbrgD\n1F7iWcY4vTfeLLwWAhIUmVmExfGNOo7y2KbOgfwkwR70bkz++jRBJxf+rvKq\nFtsuDLkJCQzeCU3/fDlafHg6dl82FecVmnAwboCOQlAScWL2XHHYYDyECxVT\n+RWgWH7R1NLgkQMLrZlU3OuUjZRJ6IMCw8dISIfhUwegXLSM2KLkrDnBvwLD\nOw4rzpqoSUo/1Bns96xWlWixvIJNngtkTnfTjeVIQ9SN0hasPVuAAY84R7Nq\nMa4r0XzblpZoVEVfgVKI1kQHOvkS9abPy+KAsrAvNHkNg7znmXfVKzLf7Eik\nAG2e\r\n=ke/U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBh6kbsPn6pSUKt23ny5OnfBtrEVFaH8kkub/wrLTEo3AiADJMqWfcQzkkqfDr/FymcVUqsChHn7Emx72R0PGahAgg=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"ulliftw@gmail.com","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0-rc.3_1568139577055_0.224646169949128"},"_hasShrinkwrap":false},"10.0.0":{"name":"preact","amdName":"preact","version":"10.0.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"9ddc04e5ba846813e349c52036acba1f685188b7","_id":"preact@10.0.0","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-v5geBMq8xlX7Ai8ed0QFXIs7/SQ+4lzdu3fpApRspZ6IiFDRHeEXQ3fqns0jDsXseHjYqgWlK1QxqdWF4QrdFw==","shasum":"c528f04ac6c792a04d8c98a5144d8b13e0cf2aed","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.0.tgz","fileCount":71,"unpackedSize":710623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk5pLCRA9TVsSAnZWagAAeI0P/i5mrpI/C7s4qdydmZCf\nmGDpI+JkuiWJkwRme4wzj0uUoqBc2YXJWdYpEtTZ3eluNmCBn8rOdE2hzayk\nJciq4nzCD7S8ZRI26ivPvm07BQOkFODP4/c5TIeV3/q5aPt/sRp3pEeD1w60\nGTToG6R5vlyddKfOgF899VooD+UhB6dy+MOnpG0bQ2IcsstsUnzcyuSnSQNc\nDyZs0htJF14rob855QiSZI27Uzr6BneaYHjFmFlb0/99j3uLVNzjSg9Q9Dnb\nQ/B4y8VoVJ4Z6qeygxCinTciehTZbEBDa5Z9f3tC5Vz5I+bfHifOiqHQeZ1j\nEl4YO13y6qb1DSLgQkAUS4mdqdAOQiT5e+MCWM6mlOCPnGI1nRC1LPsnBvPW\njlWPDyA4O/UABhEe6u7bamytKV46dB48Im6HrcUHsWr0Z4TGxjEPg7eaSN5a\npfTzaINkms/UXREGP7I4kKZtEu+CPnVvIqjFe3FIC2dQmBMWDYp2Ki7GoefP\nMIsfAP9ioKctVd8OO061AsC6eIjLcCeQoIZyLgZ94micwcjY/0hneSXiOmUW\nuYFaFqDM8yXWYo4qXDcQwu4j0j4+bkW9Ds7ZH/R5oz4sVYqRqVZL61Tvs4O6\n2SlYQT/QN2BuDSENJptbfznrH6uB+6pP3hv/mnKrjINfdRxBxWBYmdQiqd2L\nh2NR\r\n=8P5x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKonZIGPRgDxkonsxWNFnRFSzjw/VabtzWOubHDrwi6AiEAgwoBAbb1Oi5W6WZrRjQj8kyOzWx23hMUL/DAQb4evAs="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.0_1569954378194_0.7701957303344609"},"_hasShrinkwrap":false},"10.0.1":{"name":"preact","amdName":"preact","version":"10.0.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"a803e68e852e00594490e9500fd901da9f430092","_id":"preact@10.0.1","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-lq7jo1rwwCd1YkiBcuOxRc3I0y1FZACa6O7tgNXt47QZJtSlLEE53f/FDNsLtiB2IVQTHbaey20TjSPmejhDyQ==","shasum":"16451887a8490dd534d60d1bc7d2ff4a70f7e0ee","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.1.tgz","fileCount":71,"unpackedSize":710409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqK5UCRA9TVsSAnZWagAAX4sQAIXTnEjVpKB2FfBOTkoT\nuR2II326NW4ecSCXh7wn/g6iaGfi2/Tb/1bxsadkFmJxmLq5N/6BNWzo7jqK\n07ijhizTuCvvnGk/vmxgRE1V/YWQz7o7RdxB13vwpIZFHuJAAo10WAyQfAD3\nER6PMgvKKlal6sDt2GM6SNkYU4/R8jgvyJ4+cnyIIuBwGnNUNQp4d+epkiPK\nQmq1naSAWaI1c4ctS6bqvfrCIGyUYWcpSdbHpsaYfchK2zNEgketvsnTCtyQ\nuPEeOyznfRHLeWVfMN/12tAIIKMddDBNmvuRQD4Z2esPSXVCYPyo6TPxCtHH\nHKEiYDYOCdGCjd9AS6klKo7nFt/siAnJFyOErTp91r5tE0t/Ry2wQoflwC5G\ngh45dOmvoxlXeiJNQyY1YQkHlh4nPk7mz1AtIXXKS3OwdrXSYMB/pZYJ+DWi\nq7j7q7JIsz43k6gUlV8az7JGGFnriBliiC5tIclojlC28xnFXn/gXKCUNmdv\nNCBgDlp717LiobpMVuJW4WsuvW66lyPFsGNncegG7VIQ5jokzYho+dDyLqdD\nYAecEkXAGsFiUPGL5pTTwwuMLTIAMbNvuDl9k+J+ND+X1VJmHksjp2P/UwOs\nLmsajLxIpRdOPxTO5Nv78D6LtdYbN1In3dip0njynP0EC4MqKWKtgWboYBy7\nbYRO\r\n=9Z+R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUDQDLvpER8cf4cDArM3cv+M5/YkpCOD7yWd/eT/UsHAiBd+U2Ti9WEHzG7NCGIlN1r7Xn6Hjwq6g3/vAcT4iR7/Q=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.1_1571335763408_0.2985634315008716"},"_hasShrinkwrap":false},"10.0.2":{"name":"preact","amdName":"preact","version":"10.0.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw && cp dist/preact.js dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"8e848b037e8316acb725eb2b7e98d839d3817f62","_id":"preact@10.0.2","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-itBKz7eM5DFpwzsO/XVb9MM0BJwhsZadPnXRAZwrs31I07gcWMS61QKrjzz69At2L4wBIkRneyx5AnlxHfrgVw==","shasum":"fd65b1cdd3c864ce482749466dfb97fb4f363bea","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.2.tgz","fileCount":72,"unpackedSize":731073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtyv9CRA9TVsSAnZWagAAOYEP/0AnC2qodkMGF3Xujorx\nUuFs1WL5rFCrx1ftyoKK5OFDNneux7VwxcJLIdn+DjKb2sId120+qxKZLH7Z\nNms5lb6Pcam+3zX+6AtjrUYpnQ7oUkZsiaF4YN3bmyyP0ztrZiLpDMVfqvnF\nRC0bZjnRzPgNKc/ucucB7M5mtn6XXR0JPkQruua2uc6X6aso7cLNneXGstSU\nw7aJxW8TYsa4AMVI2F3/4NiNnVqC15k4CoWwoYUU7MAvEN+5xvY3y/lt54FM\nKpHNPYp5vvB3hk4W9V5plLquGfOruO6IYgV8VkccNAkbNkfyPYuLgB+GmKno\nOoYT9UrrwQtcwPGYOSAUF41Y0luFSFAQnySsS+joJRPpV0h4o0F165OjIo7i\ncVMGd5zUU3vapj3CtIrkf3DJiMPJi9SDqf6M9vlpWuk6S+/ouFv6QTTDR23h\nN4GYS/SqSQCmKaIUBpKtofo7bWJTMGQnauP4M7Cu0og1hjO5vbsp+5VbXMK2\nuLc3nWX6l28jL/2mWPCm6m/1VZeENquj5cB2SnqOEZ3DUgoGLR5Ei+UMAjZe\nS2I8CXJFIGvxdthr4AQjuBDhUAJ1LIkUSgBSdrxtv+X1F3+wsVl8bdBCj1PR\nWpiTZoHGnLoLkwDYk4p79gHirh9z1jiyjskvXz8HpONvy8Wv3aWPEcF2bqL+\n3PqF\r\n=ZK9R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqHQfoAFsWGrmho1Hn2QLTFmlWPOXYr4Dz8eiZjwV0vAIgDVYoOK60HyHIUB/T0Gp+XOpYTKWZX2Xmu4xbeBi0vbA="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.2_1572285436489_0.19859824508300905"},"_hasShrinkwrap":false},"10.0.3":{"name":"preact","amdName":"preact","version":"10.0.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw && cp dist/preact.js dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"88999fe6c46b81a7551c77ed95082a778f576aa5","_id":"preact@10.0.3","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-PpoOHxUd550lxSXu2iE2PRKuz/Jm0MSCCiThXEj4DsAWSRg7lCb76YFrNEenFDlEPy0RmDT5xeJPsIueaFAplw==","shasum":"01e037240334aa7b478dbaa693ee2cb378da3757","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.3.tgz","fileCount":72,"unpackedSize":732016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduAP2CRA9TVsSAnZWagAAe6IP/RVlcKf4QcSoRAhrAZ18\nuscT2ztEJGgceM2/GvNyhnqrUd5zYOgocdL7xFuDJnwCSFQhXKebRNA1ZksR\nuwub+dgXDeu6WUD2VnPXQAP93W3xuy0tK31Y4lLGlkARH+TAcSZ4NM8muu91\n65eB3nkBdr2N1wZr43+mb7dA5LcLt/O9cOuN4KZHNF8KvfWdfmJ8jGphlr37\nggw++LWpLyXBqjzBeFjIRIh4TJLwQL+37y0AOjhM0Iklbn3stG64elJy3VP4\n67i91zX4M1OyxcW302Wn+rtG9Z8NCsAtTaMQbXCTlpln2ZQ0FtECWbCz0Tmk\nP8TzxklmIvYNcMxBNQ069AO20JDkF/LcQ6FZ8/EUdCpuQvQYq0bnmhkHpOq0\nr0Zg7QYaAsqQlthLMO3hBm6xk/KHKzYTcamLaKibQE0iZjM2bA8y/OwO2azs\nL2dcmPlKjSFub3tvz0mHe/MdAAntkF/M0cmMrEa0uRjyVvn3pSbDLTC2dM6C\nGeMyd3oAPN89c5vZ6KipAPY04lc+vFfgBwZ0s/J6w6VE4hmylc+T8X3/ScoD\n30xDValsc3E4GcubAeChUVbN7M5jPJh6NpxQJyD1dg06U4IwCZuRftzVt43x\nYoBXQPyRbGt/PZKb94/dX3Qee1MjMf5tFaHmu1Rzvv3So9xU72rttWLTkn1k\n+I40\r\n=ql3D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDE0pu3mXGlnysIRP9QA+3q4RyTntwqE831a4LN1wHOogIhAN1oXg/fu7XDC0UkmdyL9lCeGfcX86MKkkHZtCehEDtK"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.3_1572340725829_0.26166707389791855"},"_hasShrinkwrap":false},"10.0.4":{"name":"preact","amdName":"preact","version":"10.0.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw && cp dist/preact.js dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":"developit","settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-cli":"6.26.0","babel-core":"6.26.3","babel-loader":"7.1.5","babel-plugin-istanbul":"5.0.1","babel-plugin-transform-async-to-promises":"^0.8.14","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-plugin-react":"7.12.4","karma":"^3.0.0","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"5eee583ed1395a3dd5e313a999468a6bffe46ca0","_id":"preact@10.0.4","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-x9QW91LVQZ4lkMZ8gOucyaW1414MEtgSC//JwlxR0nfq/QEdbaLQZrWFFWgjtGyNBBXg2P0TZ6u6W+XlpjcK2Q==","shasum":"7c1a2e074ea64a2d3c83349f7f55304ed0e017a7","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.4.tgz","fileCount":80,"unpackedSize":805335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduDlmCRA9TVsSAnZWagAAz0IP/0F6S9txkiCx5IfImAw+\nsCpAyP039kJlIo/Pmxtvfjek5I2c56qivkkrOFm85ANH2FdpgqkWESiNWru+\n2s8kgy3YRlbKFTH4nWpJB9bZp4SiBRnBMr7kw/7Ejurmez0FdJYUsaG0HYdL\nkTMfVjFbhyTKawCLas5w6O35G98lInn3OWJc0hrQbrK9X3vEXpYxk8j8ewLR\nRATHZ6f7SwGvY2oWOt/1lasQg0fyYjBFhMrwIDzVPVBHyRuwXYV4D6lxTbfy\nf6tAIlSyHdc2QxeiLNuUT1IiSrEAXdS5u2/GR1QxB4s9vv4DtwSkozaxQQmv\nZfFHEGDbVt3xik+l0t499vj19tP29VNae1Vx7kRnWTaZNWvWhXiEpBgckkFX\nZQeQ5SQthrwrX3B5ug7ZABp6TyrMowXVo9Q46Sc5JCBS7Mkd8RE0K0jRm2TK\nVmbgK74BnHy7n4OVtHOn6EsYgXxl1VnkRKm9HzTj5Or0Jyga0I8LeoArGOli\nCA8pbNV62ll/2Sjq2h37XpI8M7NIYYa1XBE3grh8c4doUg9LrSo+gPOM7DsR\n5eyKV5mDXpawEGHtPhZ39eI4X6xd829SD0DDBRQrfzvSLkRbPOCMVg7p2oeD\nPjToVljbhIjMps9fJ4BxhDgXsBIvuYnvSY3H/QiwqJts8pm/xosqEewR8FiL\n7yDk\r\n=HA/J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEtv1YX0R9UzKrytTtIWhVAUfv5wN1ARdtI/Hdb4W1SBAiEAyrnzqtyQN+pSn/KMpLvmt4vxMRAG/5uCzi+1+aqQpPY="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"robertknight","email":"robertknight@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.4_1572354406245_0.8735966065912224"},"_hasShrinkwrap":false},"8.5.3":{"name":"preact","version":"8.5.3","description":"Fast 3kb React alternative with the same modern API. Components & Virtual DOM.","main":"dist/preact.js","jsnext:main":"dist/preact.mjs","module":"dist/preact.mjs","dev:main":"dist/preact.dev.js","minified:main":"dist/preact.min.js","unpkg":"dist/preact.min.js","types":"dist/preact.d.ts","umd:main":"dist/preact.umd.js","scripts":{"clean":"rimraf dist/ devtools.js devtools.js.map debug.js debug.js.map test/ts/**/*.js","copy-flow-definition":"copyfiles -f src/preact.js.flow dist","copy-typescript-definition":"copyfiles -f src/preact.d.ts dist","build":"npm-run-all --silent clean transpile copy-flow-definition copy-typescript-definition strip optimize minify size","flow":"flow","transpile:main":"rollup -c config/rollup.config.js","transpile:devtools":"rollup -c config/rollup.config.devtools.js","transpile:esm":"rollup -c config/rollup.config.module.js","transpile:umd":"rollup -c config/rollup.config.umd.js","transpile:debug":"babel debug/ -o debug.js -s","transpile":"npm-run-all transpile:main transpile:esm transpile:umd transpile:devtools transpile:debug","optimize":"uglifyjs dist/preact.dev.js -c conditionals=false,sequences=false,loops=false,join_vars=false,collapse_vars=false --pure-funcs=Object.defineProperty --mangle-props --mangle-regex=\"/^(_|normalizedNodeName|nextBase|prev[CPS]|_parentC)/\" --name-cache config/properties.json -b width=120,quote_style=3 -o dist/preact.js -p relative --in-source-map dist/preact.dev.js.map --source-map dist/preact.js.map","minify":"uglifyjs dist/preact.js -c collapse_vars,evaluate,screw_ie8,unsafe,loops=false,keep_fargs=false,pure_getters,unused,dead_code -m -o dist/preact.min.js -p relative --in-source-map dist/preact.js.map --source-map dist/preact.min.js.map","prepare":"npm run build","strip:main":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.dev.js && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.dev.js","strip:esm":"jscodeshift --run-in-band -s -t config/codemod-strip-tdz.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-const.js dist/preact.mjs && jscodeshift --run-in-band -s -t config/codemod-let-name.js dist/preact.mjs","strip":"npm-run-all strip:main strip:esm","size":"node -e \"process.stdout.write('gzip size: ')\" && gzip-size --raw dist/preact.min.js","test":"npm-run-all lint --parallel test:mocha test:karma test:ts test:flow","test:flow":"flow check","test:ts":"tsc -p test/ts/ && mocha --require babel-register test/ts/**/*-test.js","test:mocha":"mocha --recursive --require babel-register test/shared test/node","test:karma":"karma start test/karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"npm run test:karma -- no-single-run","test:size":"bundlesize","lint":"eslint debug devtools src test","prepublishOnly":"npm run build","smart-release":"npm run build && npm test && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish","release":"cross-env npm run smart-release","postinstall":"node -e \"console.log('\\u001b[35m\\u001b[1mLove Preact? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/preact/donate\\u001b[0m')\""},"eslintConfig":{"extends":"./config/eslint-config.js"},"typings":"./dist/preact.d.ts","repository":{"type":"git","url":"git+https://github.com/developit/preact.git"},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"author":{"name":"Jason Miller","email":"jason@developit.ca"},"license":"MIT","bugs":{"url":"https://github.com/developit/preact/issues"},"homepage":"https://github.com/developit/preact","devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.5","@types/node":"^9.6.40","babel-cli":"^6.24.1","babel-core":"^6.24.1","babel-eslint":"^8.2.6","babel-loader":"^7.0.0","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-react-jsx":"^6.24.1","babel-preset-env":"^1.6.1","bundlesize":"^0.17.0","chai":"^4.2.0","copyfiles":"^2.1.0","core-js":"^2.6.0","coveralls":"^3.0.0","cross-env":"^5.1.4","diff":"^3.0.0","eslint":"^4.18.2","eslint-plugin-react":"^7.11.1","flow-bin":"^0.89.0","gzip-size-cli":"^2.0.0","istanbul-instrumenter-loader":"^3.0.0","jscodeshift":"^0.5.0","karma":"^3.1.3","karma-babel-preprocessor":"^7.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.6","karma-webpack":"^3.0.5","mocha":"^5.0.4","npm-run-all":"^4.1.5","puppeteer":"^1.11.0","rimraf":"^2.5.3","rollup":"^0.57.1","rollup-plugin-babel":"^3.0.2","rollup-plugin-memory":"^3.0.0","rollup-plugin-node-resolve":"^3.4.0","sinon":"^4.4.2","sinon-chai":"^3.3.0","typescript":"^3.0.1","uglify-js":"^2.7.5","webpack":"^4.27.1"},"greenkeeper":{"ignore":["babel-cli","babel-core","babel-eslint","babel-loader","jscodeshift","rollup-plugin-babel"]},"bundlesize":[{"path":"./dist/preact.min.js","threshold":"4Kb"}],"gitHead":"2b967c5074e9d067490c0ab8984cdbb527a46b78","readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: [ES6 Class] and [Functional Components]\n- Extensive React compatibility via a simple [preact-compat] alias\n- Everything you need: JSX, VDOM, React DevTools, HMR, SSR..\n- A highly optimized diff algorithm and seamless Server Side Rendering\n- Transparent asynchronous rendering with a pluggable scheduler\n- 🆕💥 **Instant no-config app bundling with [Preact CLI](https://github.com/developit/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n---\n\n\n\n- [Demos](#demos)\n- [Libraries & Add-ons](#libraries--add-ons)\n- [Getting Started](#getting-started)\n\t- [Import what you need](#import-what-you-need)\n\t- [Rendering JSX](#rendering-jsx)\n\t- [Components](#components)\n\t- [Props & State](#props--state)\n- [Linked State](#linked-state)\n- [Examples](#examples)\n- [Extensions](#extensions)\n- [Debug Mode](#debug-mode)\n- [Backers](#backers)\n- [Sponsors](#sponsors)\n- [License](#license)\n\n\n\n\n# Preact\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![CDNJS](https://img.shields.io/cdnjs/v/preact.svg)](https://cdnjs.com/libraries/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://preact-slack.now.sh)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n[![travis](https://travis-ci.org/developit/preact.svg?branch=master)](https://travis-ci.org/developit/preact)\n[![coveralls](https://img.shields.io/coveralls/developit/preact/master.svg)](https://coveralls.io/github/developit/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![install size](https://packagephobia.now.sh/badge?p=preact)](https://packagephobia.now.sh/result?p=preact)\n\nPreact supports modern browsers and IE9+:\n\n[![Browsers](https://saucelabs.com/browser-matrix/preact.svg)](https://saucelabs.com/u/preact)\n\n\n---\n\n\n## Demos\n\n#### Real-World Apps\n\n- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_\n- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_\n- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_\n- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.\n- [**ESBench**](http://esbench.com) is built using Preact.\n- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_\n- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:\n- [**TodoMVC**](https://preact-todomvc.surge.sh) _([GitHub Project](https://github.com/developit/preact-todomvc))_\n- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_\n- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_\n- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:\n- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:\n- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:\n- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_\n- [**Preact Gallery**](https://preact.gallery/) an 8KB photo gallery PWA built using Preact.\n- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) Preact app to translate real life color to digital color _([Github project](https://github.com/vaneenige/rainbow-explorer))_.\n- [**YASCC**](https://carlosqsilva.github.io/YASCC/#/) Yet Another SoundCloud Client _([Github project](https://github.com/carlosqsilva/YASCC))_.\n- [**Journalize**](https://preact-journal.herokuapp.com/) 14k offline-capable journaling PWA using preact. _([Github project](https://github.com/jpodwys/preact-journal))_.\n\n\n#### Runnable Examples\n\n- [**Flickr Browser**](http://codepen.io/developit/full/VvMZwK/) (@ CodePen)\n- [**Animating Text**](http://codepen.io/developit/full/LpNOdm/) (@ CodePen)\n- [**60FPS Rainbow Spiral**](http://codepen.io/developit/full/xGoagz/) (@ CodePen)\n- [**Simple Clock**](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/) (@ JSFiddle)\n- [**3D + ThreeJS**](http://codepen.io/developit/pen/PPMNjd?editors=0010) (@ CodePen)\n- [**Stock Ticker**](http://codepen.io/developit/pen/wMYoBb?editors=0010) (@ CodePen)\n- [*Create your Own!*](https://jsfiddle.net/developit/rs6zrh5f/embedded/result/) (@ JSFiddle)\n\n### Starter Projects\n\n- [**Preact Boilerplate**](https://preact-boilerplate.surge.sh) _([GitHub Project](https://github.com/developit/preact-boilerplate))_ :zap:\n- [**Preact Offline Starter**](https://preact-starter.now.sh) _([GitHub Project](https://github.com/lukeed/preact-starter))_ :100:\n- [**Preact PWA**](https://preact-pwa-yfxiijbzit.now.sh/) _([GitHub Project](https://github.com/ezekielchentnik/preact-pwa))_ :hamburger:\n- [**Parcel + Preact + Unistore Starter**](https://github.com/hwclass/parcel-preact-unistore-starter)\n- [**Preact Mobx Starter**](https://awaw00.github.io/preact-mobx-starter/) _([GitHub Project](https://github.com/awaw00/preact-mobx-starter))_ :sunny:\n- [**Preact Redux Example**](https://github.com/developit/preact-redux-example) :star:\n- [**Preact Redux/RxJS/Reselect Example**](https://github.com/continuata/preact-seed)\n- [**V2EX Preact**](https://github.com/yanni4night/v2ex-preact)\n- [**Preact Coffeescript**](https://github.com/crisward/preact-coffee)\n- [**Preact + TypeScript + Webpack**](https://github.com/k1r0s/bleeding-preact-starter)\n- [**0 config => Preact + Poi**](https://github.com/k1r0s/preact-poi-starter)\n- [**Zero configuration => Preact + Typescript + Parcel**](https://github.com/aalises/preact-typescript-parcel-starter)\n\n---\n\n## Libraries & Add-ons\n\n- :raised_hands: [**preact-compat**](https://git.io/preact-compat): use any React library with Preact *([full example](http://git.io/preact-compat-example))*\n- :twisted_rightwards_arrows: [**preact-context**](https://github.com/valotas/preact-context): React's `createContext` api for Preact\n- :page_facing_up: [**preact-render-to-string**](https://git.io/preact-render-to-string): Universal rendering.\n- :eyes: [**preact-render-spy**](https://github.com/mzgoddard/preact-render-spy): Enzyme-lite: Renderer with access to the produced virtual dom for testing.\n- :loop: [**preact-render-to-json**](https://git.io/preact-render-to-json): Render for Jest Snapshot testing.\n- :earth_americas: [**preact-router**](https://git.io/preact-router): URL routing for your components\n- :bookmark_tabs: [**preact-markup**](https://git.io/preact-markup): Render HTML & Custom Elements as JSX & Components\n- :satellite: [**preact-portal**](https://git.io/preact-portal): Render Preact components into (a) SPACE :milky_way:\n- :pencil: [**preact-richtextarea**](https://git.io/preact-richtextarea): Simple HTML editor component\n- :bookmark: [**preact-token-input**](https://github.com/developit/preact-token-input): Text field that tokenizes input, for things like tags\n- :card_index: [**preact-virtual-list**](https://github.com/developit/preact-virtual-list): Easily render lists with millions of rows ([demo](https://jsfiddle.net/developit/qqan9pdo/))\n- :repeat: [**preact-cycle**](https://git.io/preact-cycle): Functional-reactive paradigm for Preact\n- :triangular_ruler: [**preact-layout**](https://download.github.io/preact-layout/): Small and simple layout library\n- :thought_balloon: [**preact-socrates**](https://github.com/matthewmueller/preact-socrates): Preact plugin for [Socrates](http://github.com/matthewmueller/socrates)\n- :rowboat: [**preact-flyd**](https://github.com/xialvjun/preact-flyd): Use [flyd](https://github.com/paldepind/flyd) FRP streams in Preact + JSX\n- :speech_balloon: [**preact-i18nline**](https://github.com/download/preact-i18nline): Integrates the ecosystem around [i18n-js](https://github.com/everydayhero/i18n-js) with Preact via [i18nline](https://github.com/download/i18nline).\n- :microscope: [**preact-jsx-chai**](https://git.io/preact-jsx-chai): JSX assertion testing _(no DOM, right in Node)_\n- :tophat: [**preact-classless-component**](https://github.com/ld0rman/preact-classless-component): create preact components without the class keyword\n- :hammer: [**preact-hyperscript**](https://github.com/queckezz/preact-hyperscript): Hyperscript-like syntax for creating elements\n- :white_check_mark: [**shallow-compare**](https://github.com/tkh44/shallow-compare): simplified `shouldComponentUpdate` helper.\n- :shaved_ice: [**preact-codemod**](https://github.com/vutran/preact-codemod): Transform your React code to Preact.\n- :construction_worker: [**preact-helmet**](https://github.com/download/preact-helmet): A document head manager for Preact\n- :necktie: [**preact-delegate**](https://github.com/NekR/preact-delegate): Delegate DOM events\n- :art: [**preact-stylesheet-decorator**](https://github.com/k1r0s/preact-stylesheet-decorator): Add Scoped Stylesheets to your Preact Components\n- :electric_plug: [**preact-routlet**](https://github.com/k1r0s/preact-routlet): Simple `Component Driven` Routing for Preact using ES7 Decorators\n- :fax: [**preact-bind-group**](https://github.com/k1r0s/preact-bind-group): Preact Forms made easy, Group Events into a Single Callback\n- :hatching_chick: [**preact-habitat**](https://github.com/zouhir/preact-habitat): Declarative Preact widgets renderer in any CMS or DOM host ([demo](https://codepen.io/zouhir/pen/brrOPB)).\n- :tada: [**proppy-preact**](https://github.com/fahad19/proppy): Functional props composition for Preact components\n\n#### UI Component Libraries\n\n> Want to prototype something or speed up your development? Try one of these toolkits:\n\n- [**preact-material-components**](https://github.com/prateekbh/preact-material-components): Material Design Components for Preact ([website](https://material.preactjs.com/))\n- [**preact-mdc**](https://github.com/BerndWessels/preact-mdc): Material Design Components for Preact ([demo](https://github.com/BerndWessels/preact-mdc-demo))\n- [**preact-mui**](https://git.io/v1aVO): The MUI CSS Preact library.\n- [**preact-photon**](https://git.io/preact-photon): build beautiful desktop UI with [photon](http://photonkit.com)\n- [**preact-mdl**](https://git.io/preact-mdl): [Material Design Lite](https://getmdl.io) for Preact\n- [**preact-weui**](https://github.com/afeiship/preact-weui): [Weui](https://github.com/afeiship/preact-weui) for Preact\n\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/developit/preact-cli). This simple command-line tool wraps up the best possible Webpack and Babel setup for you, and even keeps you up-to-date as the underlying tools change. Best of all, it's easy to understand! It builds your app in a single command (`preact build`), doesn't need any configuration, and bakes in best-practises 🙌.\n\nThe following guide assumes you have some sort of ES2015 build set up using babel and/or webpack/browserify/gulp/grunt/etc.\n\nYou can also start with [preact-boilerplate] or a [CodePen Template](http://codepen.io/developit/pen/pgaROe?editors=0010).\n\n\n### Import what you need\n\nThe `preact` module provides both named and default exports, so you can either import everything under a namespace of your choosing, or just what you need as locals:\n\n##### Named:\n\n```js\nimport { h, render, Component } from 'preact';\n\n// Tell Babel to transform JSX into h() calls:\n/** @jsx h */\n```\n\n##### Default:\n\n```js\nimport preact from 'preact';\n\n// Tell Babel to transform JSX into preact.h() calls:\n/** @jsx preact.h */\n```\n\n> Named imports work well for highly structured applications, whereas the default import is quick and never needs to be updated when using different parts of the library.\n>\n> Instead of declaring the `@jsx` pragma in your code, it's best to configure it globally in a `.babelrc`:\n>\n> **For Babel 5 and prior:**\n>\n> ```json\n> { \"jsxPragma\": \"h\" }\n> ```\n>\n> **For Babel 6:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n>\n> **For Babel 7:**\n>\n> ```json\n> {\n> \"plugins\": [\n> [\"@babel/plugin-transform-react-jsx\", { \"pragma\":\"h\" }]\n> ]\n> }\n> ```\n> **For using Preact along with TypeScript add to `tsconfig.json`:**\n>\n> ```json\n> {\n> \"jsx\": \"react\",\n> \"jsxFactory\": \"h\",\n> }\n> ```\n\n\n### Rendering JSX\n\nOut of the box, Preact provides an `h()` function that turns your JSX into Virtual DOM elements _([here's how](http://jasonformat.com/wtf-is-jsx))_. It also provides a `render()` function that creates a DOM tree from that Virtual DOM.\n\nTo render some JSX, just import those two functions and use them like so:\n\n```js\nimport { h, render } from 'preact';\n\nrender((\n\t
\n\t\tHello, world!\n\t\t\n\t
\n), document.body);\n```\n\nThis should seem pretty straightforward if you've used hyperscript or one of its many friends. If you're not, the short of it is that the `h()` function import gets used in the final, transpiled code as a drop in replacement for `React.createElement()`, and so needs to be imported even if you don't explicitly use it in the code you write. Also note that if you're the kind of person who likes writing your React code in \"pure JavaScript\" (you know who you are) you will need to use `h()` wherever you would otherwise use `React.createElement()`.\n\nRendering hyperscript with a virtual DOM is pointless, though. We want to render components and have them updated when data changes - that's where the power of virtual DOM diffing shines. :star2:\n\n\n### Components\n\nPreact exports a generic `Component` class, which can be extended to build encapsulated, self-updating pieces of a User Interface. Components support all of the standard React [lifecycle methods], like `shouldComponentUpdate()` and `componentWillReceiveProps()`. Providing specific implementations of these methods is the preferred mechanism for controlling _when_ and _how_ components update.\n\nComponents also have a `render()` method, but unlike React this method is passed `(props, state)` as arguments. This provides an ergonomic means to destructure `props` and `state` into local variables to be referenced from JSX.\n\nLet's take a look at a very simple `Clock` component, which shows the current time.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\trender() {\n\t\tlet time = new Date();\n\t\treturn ;\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\n\nThat's great. Running this produces the following HTML DOM structure:\n\n```html\n10:28:57 PM\n```\n\nIn order to have the clock's time update every second, we need to know when `` gets mounted to the DOM. _If you've used HTML5 Custom Elements, this is similar to the `attachedCallback` and `detachedCallback` lifecycle methods._ Preact invokes the following lifecycle methods if they are defined for a Component:\n\n| Lifecycle method | When it gets called |\n|-----------------------------|--------------------------------------------------|\n| `componentWillMount` | before the component gets mounted to the DOM |\n| `componentDidMount` | after the component gets mounted to the DOM |\n| `componentWillUnmount` | prior to removal from the DOM |\n| `componentWillReceiveProps` | before new props get accepted |\n| `shouldComponentUpdate` | before `render()`. Return `false` to skip render |\n| `componentWillUpdate` | before `render()` |\n| `componentDidUpdate` | after `render()` |\n\n\n\nSo, we want to have a 1-second timer start once the Component gets added to the DOM, and stop if it is removed. We'll create the timer and store a reference to it in `componentDidMount()`, and stop the timer in `componentWillUnmount()`. On each timer tick, we'll update the component's `state` object with a new time value. Doing this will automatically re-render the component.\n\n```js\nimport { h, render, Component } from 'preact';\n\nclass Clock extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t// set initial time:\n\t\tthis.state = {\n\t\t\ttime: Date.now()\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\t// update time every second\n\t\tthis.timer = setInterval(() => {\n\t\t\tthis.setState({ time: Date.now() });\n\t\t}, 1000);\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// stop when not renderable\n\t\tclearInterval(this.timer);\n\t}\n\n\trender(props, state) {\n\t\tlet time = new Date(state.time).toLocaleTimeString();\n\t\treturn { time };\n\t}\n}\n\n// render an instance of Clock into :\nrender(, document.body);\n```\n\nNow we have [a ticking clock](http://jsfiddle.net/developit/u9m5x0L7/embedded/result,js/)!\n\n\n### Props & State\n\nThe concept (and nomenclature) for `props` and `state` is the same as in React. `props` are passed to a component by defining attributes in JSX, `state` is internal state. Changing either triggers a re-render, though by default Preact re-renders Components asynchronously for `state` changes and synchronously for `props` changes. You can tell Preact to render `prop` changes asynchronously by setting `options.syncComponentUpdates` to `false`.\n\n\n---\n\n\n## Linked State\n\nOne area Preact takes a little further than React is in optimizing state changes. A common pattern in ES2015 React code is to use Arrow functions within a `render()` method in order to update state in response to events. Creating functions enclosed in a scope on every render is inefficient and forces the garbage collector to do more work than is necessary.\n\nOne solution to this is to bind component methods declaratively.\nHere is an example using [decko](http://git.io/decko):\n\n```js\nclass Foo extends Component {\n\t@bind\n\tupdateText(e) {\n\t\tthis.setState({ text: e.target.value });\n\t}\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nWhile this achieves much better runtime performance, it's still a lot of unnecessary code to wire up state to UI.\n\nFortunately there is a solution, in the form of a module called [linkstate](https://github.com/developit/linkstate). Calling `linkState(component, 'text')` returns a function that accepts an Event and uses its associated value to update the given property in your component's state. Calls to `linkState()` with the same arguments are cached, so there is no performance penalty. Here is the previous example rewritten using _Linked State_:\n\n```js\nimport linkState from 'linkstate';\n\nclass Foo extends Component {\n\trender({ }, { text }) {\n\t\treturn ;\n\t}\n}\n```\n\nSimple and effective. It handles linking state from any input type, or an optional second parameter can be used to explicitly provide a keypath to the new state value.\n\n> **Note:** In Preact 7 and prior, `linkState()` was built right into Component. In 8.0, it was moved to a separate module. You can restore the 7.x behavior by using linkstate as a polyfill - see [the linkstate docs](https://github.com/developit/linkstate#usage).\n\n\n\n## Examples\n\nHere is a somewhat verbose Preact `` component:\n\n```js\nclass Link extends Component {\n\trender(props, state) {\n\t\treturn {props.children};\n\t}\n}\n```\n\nSince this is ES6/ES2015, we can further simplify:\n\n```js\nclass Link extends Component {\n render({ href, children }) {\n return ;\n }\n}\n\n// or, for wide-open props support:\nclass Link extends Component {\n render(props) {\n return ;\n }\n}\n\n// or, as a stateless functional component:\nconst Link = ({ children, ...props }) => (\n { children }\n);\n```\n\n\n## Extensions\n\nIt is likely that some projects based on Preact would wish to extend Component with great new functionality.\n\nPerhaps automatic connection to stores for a Flux-like architecture, or mixed-in context bindings to make it feel more like `React.createClass()`. Just use ES2015 inheritance:\n\n```js\nclass BoundComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bind();\n\t}\n\tbind() {\n\t\tthis.binds = {};\n\t\tfor (let i in this) {\n\t\t\tthis.binds[i] = this[i].bind(this);\n\t\t}\n\t}\n}\n\n// example usage\nclass Link extends BoundComponent {\n\tclick() {\n\t\topen(this.href);\n\t}\n\trender() {\n\t\tlet { click } = this.binds;\n\t\treturn { children };\n\t}\n}\n```\n\n\nThe possibilities are pretty endless here. You could even add support for rudimentary mixins:\n\n```js\nclass MixedComponent extends Component {\n\tconstructor() {\n\t\tsuper();\n\t\t(this.mixins || []).forEach( m => Object.assign(this, m) );\n\t}\n}\n```\n\n## Debug Mode\n\nYou can inspect and modify the state of your Preact UI components at runtime using the\n[React Developer Tools](https://github.com/facebook/react-devtools) browser extension.\n\n1. Install the [React Developer Tools](https://github.com/facebook/react-devtools) extension\n2. Import the \"preact/debug\" module in your app\n3. Set `process.env.NODE_ENV` to 'development'\n4. Reload and go to the 'React' tab in the browser's development tools\n\n\n```js\nimport { h, Component, render } from 'preact';\n\n// Enable debug mode. You can reduce the size of your app by only including this\n// module in development builds. eg. In Webpack, wrap this with an `if (module.hot) {...}`\n// check.\nrequire('preact/debug');\n```\n\n### Runtime Error Checking\n\nTo enable debug mode, you need to set `process.env.NODE_ENV=development`. You can do this\nwith webpack via a builtin plugin.\n\n```js\n// webpack.config.js\n\n// Set NODE_ENV=development to enable error checking\nnew webpack.DefinePlugin({\n 'process.env': {\n 'NODE_ENV': JSON.stringify('development')\n }\n});\n```\n\nWhen enabled, warnings are logged to the console when undefined components or string refs\nare detected.\n\n### Developer Tools\n\nIf you only want to include devtool integration, without runtime error checking, you can\nreplace `preact/debug` in the above example with `preact/devtools`. This option doesn't\nrequire setting `NODE_ENV=development`.\n\n\n\n## Backers\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## License\n\nMIT\n\n\n\n[![Preact](http://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact-compat]: https://github.com/developit/preact-compat\n[ES6 Class]: https://facebook.github.io/react/docs/reusable-components.html#es6-classes\n[Functional Components]: https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[preact-boilerplate]: https://github.com/developit/preact-boilerplate\n[lifecycle methods]: https://facebook.github.io/react/docs/component-specs.html\n","readmeFilename":"README.md","_id":"preact@8.5.3","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==","shasum":"78c2a5562fcecb1fed1d0055fa4ac1e27bde17c1","tarball":"http://localhost:4545/npm/registry/preact/preact-8.5.3.tgz","fileCount":40,"unpackedSize":631472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdu+/NCRA9TVsSAnZWagAAl8AP/RZ8MecOISyVlY8MvWWe\nqpbEFQ8xJy6vae3IfWN3grOe/4ER39Tud1ROijPmdC549oDIoPAf5efkNS1e\nZfX+V7rpqg3yndCqM/fUbzWhlZo+cF84Rhc4meGiohj8YI1XrTYR+B68/FcK\nHKq8yrcKACS/v+c7JROAd4BU1ZBHT+JSX4hsAOLRDaH5lPnMiTdleJ8IOz3Z\nXLDNAxeAsVhpPFkEZpMcOfBHvcgb4wEod8HYcKXZ8CCCWIAo8NWGWL6m7Q99\nb+tKW6YNLC/qE00KpJPBKHNlG6hsiu5sGoRdPPRAD4xr7LVNbLHC6+CvAjWZ\nf2qgxNdFOHnEbZ976ZOoRPtVT46yQVE340GoY6U2WsQ+QM4ltv8jx2zGcx7K\nGqaXVbhsdmuB9awBhryHMi0HOQhlmDKKsSgi59q/NwuuhuL19VCPz1FF1pmf\nX28S6PRTr2mNPdd+udl9trK4kF0f8w7r2mpjc7kzZGrT4QRp27Wxw7ucuk7h\nNaFSifUXqcTuFqXoyLE5L3K52iuA/aUBmSlwsWtDv7N6IglqUDIubuMqKJ1L\nynWwflv8SU4FK5OrGi/UeMLViWKHBY3ACedMNgqPioU8ZNPPIDYH7zL2Z36v\nes74cIr1W0nlNycqGfZvNto2hlqNz0JDIELplbqPFkppRoC276fGoVu5ljxO\nyQiQ\r\n=eJjn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBoBLIZoUavCe0M2uiHLdl2rCC10HNYuW0NRNqie/PhIAiEA1cxUnYSGMBvU36i6nTKwoTpnqqRJuvTXIVhVr0gGh7s="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_8.5.3_1572597708973_0.11140122635136729"},"_hasShrinkwrap":false},"10.0.5":{"name":"preact","amdName":"preact","version":"10.0.5","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build --parallel test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^5.2.0","babel-plugin-transform-async-to-promises":"^0.8.15","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"9e780aa8fb9f1abc0796f2dd7ae612e5fc855e08","_id":"preact@10.0.5","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-62+J+GTrv3Uhp6DefqZTel6VYcdUA1zqHO7gjQSKdOwkU2sNOp/Vl6Zf2A3hIWV5EBgjeDA8gsOn6dmB3I1Dvg==","shasum":"16f0bcd77241693e710778069e703217dd497867","tarball":"http://localhost:4545/npm/registry/preact/preact-10.0.5.tgz","fileCount":73,"unpackedSize":753467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyA/QCRA9TVsSAnZWagAAGS0P/AzvDPk+f9ocTQRBz+qf\nZJQU8LLBtldQdCZDgKbmBF+F44EOYZOpLNU4Sv6YPhxTOL8PFS6+MIRcrHZp\nWRbRjCVHjj23E544xKB3kat570++jScPpndA9jOB7W4G+OPr1p4NQEVrnARA\nvyeCRHPwIdJMxwE6MpTBlxdC1w8E3hK5fr6q/8uR3evzHRB10HJl4UNxt5H7\nzGLkNfqo0TtAjehx3joVa8hj03DI0NGAVd+DsAyNOUadV5k5KBnWBQWE10XZ\nTPUp5FiVfBhVRTDPLolZcRZAbyNebiOT3qxWi5EaNe9AFfsQPJmJh8K0MnA8\nWdvTP6xlSIfEdERhDNqZRRautColCu8a/omKH3ijdIwsnoYOn5tE3egVJdPe\nZiOlgq4j+VlyKL45c58fXiUUPuwpOUQbiYcb4gt7wXfSZQaCRyIXJYI10YCj\nFoSGOnjoTBSl/AIU5AwmBtMXKg5SxoWD/pIfbke8hemS3mcyoOGbXuny+Yat\nZQMa2j7JU2DHfpH7xL+OX1hNvpc/A9QIfp2EdyC8kg0xmbEokIKhW4yszHYv\nf3CMjhJ27rjC34zirrCKV85E9GetR+RgJsqFP5l0fvMmXMiaoLWqkdP2oZ0a\nNlPym0b5H0JsmxGtos3rvSRvuIAt0EU6vnFTxFdtQFRKQYbWUwyTMUzK4dDp\n1bwW\r\n=+Fl1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcpm7BLPPlqr6j92aYTQRxTHKhngtUIal9KCCfE6KHOAIhAPDizwt5I3LMjYgHado9KAuLSlKc+hT00Jysfi4E9bEL"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.0.5_1573392335880_0.9981386032937343"},"_hasShrinkwrap":false},"10.1.0":{"name":"preact","amdName":"preact","version":"10.1.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^5.2.0","babel-plugin-transform-async-to-promises":"^0.8.15","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"1a9d7fcbc2ad46454db5fec6d2583b82b3d6cdad","_id":"preact@10.1.0","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-TKPqDMstuxDkZydQ05vrLHSxpo+tG2jtyQXxp5HEGhr17Qgo3KQnD5Dq4xzX0+YFQJCETy4pnyPqLA/sgtpp/w==","shasum":"e90771c3fec23926bbd32ff4e9e62e4d79845f8b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.1.0.tgz","fileCount":93,"unpackedSize":965603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7pd9CRA9TVsSAnZWagAARc8P/1ZUc4oSJbtfrLwg2/Li\nmoxKcMSoFMo9g1P3F6ZNkUReJ1bxnH66ZXCwghwry5hwoNdHNa4Dc5LSU0fw\nij3U1Fr36aeoUfSsUvXt6e72IzTe4ruifGhTbFDHPsxOfg9+Y4jMAJ33SY8l\n9uSmKCWHowGMVTianfi/mlx1ILO/m0ZhOiL5CMTvhF7AoCZr9/Z+a/0V7NrP\nPqEEEAdpmjm/Zfc1ngHkwgy9D0kjVYZDLsKUD+X2fPkUq4iJjTtTCoFtsb+q\nwOAx2JNZXLrs+TmzCTIxUtxi8pS8xTpQiT/+8Hlc4caw3cvv3eQUjafvrlbJ\nvhf7j+lYSR3YKoL5wutPURbH9ZuwDJ+eQe9eWiFIi+3RSDBwZ6veQkSpif2D\nTHFHDXTk6Ys/bADlQWmradpkUwaqKcbbFTnk2ZAyINEOp04j43u+yp0JtwYS\nqA/97kRLLGatb4Igtgz9WrmZHRQXqyZespn7SL7CAz1TlkVfGmpjsdA1+b3b\nQoxk+2iqQkHrl4YCGcPv21h6zip7Zp8QHfDRaT/SjMZYdtLOQZRWWr+FsGZf\nyzFAsbVxcLHov8ee80dEIb99Jh/mdsxIzy4FFFBPTCYSz91mNwKjmJBEIYAt\n5C6JWji199CRXSOiyBwWkSvBpdDbvIrOHDaQGDXSbAJguMx+QnBSw+tYvefq\n545k\r\n=WGb3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDX8bYOdfBG8JxpsUlE9kHE9Ds4V9FLwKN62O8qkIkGcAIhAIxhU04DWKx36SzNtHBbO9QOkN5Is5qksjcPcDMRQEF/"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.1.0_1575917436646_0.028205034816745078"},"_hasShrinkwrap":false},"10.1.1":{"name":"preact","amdName":"preact","version":"10.1.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","virtual dom","vdom","components","virtual","dom"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://github.com/preactjs/preact","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^5.2.0","babel-plugin-transform-async-to-promises":"^0.8.15","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"71425ff63ddd59989a7c657f659b70960d457600","_id":"preact@10.1.1","_nodeVersion":"11.15.0","_npmVersion":"6.10.1","dist":{"integrity":"sha512-mKW7Cdn68XMhdes0FjyIbA8+IVPsj3aIuAEQlZVkj9E2VhujWcXZEfwirBoXK6qZYfj1djaTBDCFKjAu1sK93w==","shasum":"1fd12e3ed6b74993ed8805f68e9d953cc914889a","tarball":"http://localhost:4545/npm/registry/preact/preact-10.1.1.tgz","fileCount":94,"unpackedSize":991191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9+BMCRA9TVsSAnZWagAAT2cP/RNNdSlzwJ9Hz1CGePp1\nzc6cv3LzK5e+OuLVm9coE+kS6bDXvnIMNWZXat6KeiDY7gH+uD5OVPzBwvCM\ngppEfc5QwfyHVdiT6wFQU6m5QMnCNlyNSvM8qqvWMWlay4domX2dgPxtLEyA\nd/OIDQg1LtcdgoZxgORI6zSprCaPQC90zHfKJqdfEstYNMh4LlxH48nIdqB7\nUEHqt1gDSx62LcMIvT0K/5iG3utrD/eYiNi/BWNFQoTTkTIoa0CoZiB0pYX/\nbWl7XTS+7DDK5epoZlUNf4SdgaBX/z2NeohTEMRq+nVMAkFp0lG0iEQMJQcR\nZYm+bQt50dbv0iQoavACNsFJtnkFK5N40676zUuH5ZpRdnSEmNM3hj0FqNiK\nT1FMS33xs0v/Er7f5NJvnZWRPZhGx9lI73AbTX5koiajqPmr5BiKGpAI8rff\nNh6lax5c1HJ1HFMHiLM7D6pUizVNEVxoLuYAvhynQZCr5jw0Wcy+FLf9hkfZ\nH6xudkW538x95/vwXJ6XaerJh1E1uaqKZ15DX5a0rnphnmHCUPuh72pzQO56\nYrUMlMRpFvnwJc/KNUs00OmSON6cQ5Uqwiu6R2PaILUAa8tJvGG0I8q3e8uP\nH1uSP2i5/CHmOJh/V5E/FR2iNAq7FVQC1mahBVqU4CLp+yZAVkAWwQ+M6Ohe\nH7BH\r\n=u0RV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID3NdUG0dT8s4Vxjw6BJODmXiZRkCPlM5oHFmfqxdPpOAiBz5bBlO8PP0i+YHqWbGmXQL5uUWXN8pFBHxn5SaNYGAA=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.1.1_1576525898861_0.2997427680200726"},"_hasShrinkwrap":false},"10.2.0":{"name":"preact","amdName":"preact","version":"10.2.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^5.2.0","babel-plugin-transform-async-to-promises":"^0.8.15","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"f695f5a45cf9594b6b64ae21c64a51b69470271a","_id":"preact@10.2.0","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-U7vf4sJM4vt5RJ4x4x1YPNfBy3fMRRD2/sVf8zIH4OwsM/X3bpiRtxtTq8X6LP2F/6Aig6H05rkEVnnvrhfNwg==","shasum":"cd78f83cd5381b0cdf3be9ff9a3d0376802cc466","tarball":"http://localhost:4545/npm/registry/preact/preact-10.2.0.tgz","fileCount":94,"unpackedSize":977231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFO1QCRA9TVsSAnZWagAAarEP/i+CDPFxtmeyvGRek5TK\nZy9Kg4PUQ0TBIjbl7OgmlVAQujIDwSiippA/sIiVxtjdMCwuLrrtORIlQmBb\n2VT1oXDTPB6Nxe5YmgYYc0zd4IUTNOhrV0lL+EkNWzv6m8v6+lBf4PdMzetE\njar0zyU8vDJdT+cjFUhwZ1MdHuJcRUqvy1v3InfI6l8A0PQL549y4UMuEIF2\ntnVe4qNdt5cYaFAneSa2X8OT2N1YKscVZpQ/9i60UTJucBPHBgU4wEp3Buq2\n7jRnuUXmzso56ETpyJpNCCyeHIMvx8J7bvifHxTEivklhWQz4Mqi2xWD3FdR\nOsmyRJ4MJjgBWTy85YU6oI1cCBwlXlAoU5s6df0Mfzt9Q2wFvUzSGMhH3NI2\nRGZDWef2zRAbmEQF9l4Ho0e080+7kzSHqH2mLLsYp8ejls2wqPLuddtRiLr3\nFFxubRFtuandnYDxaUINvQfJqFP69+xMLhQ9hmZLFCj95gHrx40KWs2+zK+n\n2y6QWvRettsmPHVzz+l8BQQdDAOEvh1q5Pt/S655LHQ8fCqlTYHmBKWWBARN\nathPxUBUdwk3jPVOKiyihmtxuvZ33CIOINTn3khtvkdBAwg6YGDhmwcYd3u/\nvZQ6Ag0u27t0OtBrvSmD9OJkj9G6zGpfpYpJyTAopaEmN+kDGxxZZhHiBZGM\n2Efy\r\n=GYLG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChuEwdNR4JS7lJMcgVeuLAVt+a7P6Isj87ZRFFc+1zjwIhAOPsHeyo9qOaeDy6NDqFjsTVzllvUlUCkP/Gw1Md4ccM"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.2.0_1578429775497_0.9996777111166808"},"_hasShrinkwrap":false},"10.2.1":{"name":"preact","amdName":"preact","version":"10.2.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^5.2.0","babel-plugin-transform-async-to-promises":"^0.8.15","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"cf635d5eb274c2fba4fc23c34ef9157b90d17e81","_id":"preact@10.2.1","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-BUNvmQcVtNElku7mYHexIiM5JlGNSW2BY9O2t9xk1NqA43O8wbE0cah6PAlvT7PBHvyDRJ5TAj5Fewdi9DqLoQ==","shasum":"b30eb4cdc455499ee2ff82e0fa1a16fc8e20f3a4","tarball":"http://localhost:4545/npm/registry/preact/preact-10.2.1.tgz","fileCount":94,"unpackedSize":977107,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFZR1CRA9TVsSAnZWagAAIywP/jf+r8pHwJ4FWz24S+H6\nOGBt/RtpzmN9sbFZDYhp901ffhBd5pBw3p2E1l6c8dIYfygncSwEgruWe9sp\n63fkVy0nmC5ojtxTkR5a8O/a26Cjhj2ih7ezx4sXqrh9OQ9vv2xHNFfQdUiH\nXwKrEl2ckZ0+uRQfFtW8i9qKvcGU+W8NUoDV+nodngMdkF5Co7eUFHi4zPF4\nxKSuVECYtu1c0oqx7NCO8zf2/oZ0mwA5A91fRNNMngjJvgcGeOkoNF/7tHVX\n+kSHElSk26Tn/qvwnl7lEpTEjPoDClMOvK0hEZESJwaXz6USvMbs2I1dz5pk\nbZmgWecFZqlvcF8hF2JsMp3hdtO+RyDgqxhrkoWy1K/xoPigeDy1VwfD1iAM\nnYgxIqmJXLOVeBmF0RNquWZFzFzXMsgZwmbuTu4YU23X7kRz+/p141dEzJdD\nTya9hSy3SSn3YwtGLDXiCUfb71DDtm43HyKBfYc+X8UysbneyxkACifJhV3i\nISFkFX4bumplrne2fzzbBKAtjvwH591BaJDq4EvgJZYCjbAQr3Hm9rqN/RJl\n0IUXzDHjLLxGMIHv+Ai6LA6jXzKInHb0r78pst6h+e+qBDCIE6nX9SWdhEnZ\n80RSlGZ+NCIqSfx8wnoSJJw15sWQoz94b53jBpkr1vI1StJEt/uiLFuBfaFH\n1nW9\r\n=FGMm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSABvy4IIYvS/ydmKnZJJ3cPo2eZqxKM+Rwks9ML7hmgIhALJfN2l+JOdUYzQDTxhQhdb7veD4mQQTIt4P8xJGb8OE"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.2.1_1578472564505_0.8067964458286674"},"_hasShrinkwrap":false},"10.3.0":{"name":"preact","amdName":"preact","version":"10.3.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{"./compat":{"require":"./compat/dist/compat.js","import":"./compat/dist/compat.module.js","browser":"./compat/dist/compat.umd.js"},"./debug":{"require":"./debug/dist/debug.js","import":"./debug/dist/debug.module.js","browser":"./debug/dist/debug.umd.js"},"./hooks":{"require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.module.js","browser":"./hooks/dist/hooks.umd.js"},"./test-utils":{"require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.module.js","browser":"./test-utils/dist/testUtils.umd.js"}},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:mocha:watch":"npm run test:mocha -- --watch","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^5.2.0","babel-plugin-transform-async-to-promises":"^0.8.15","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.2","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-source-map-support":"^1.3.0","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"5b5ce2fa66b5ad1fadc23c868730ac92b4719e8e","_id":"preact@10.3.0","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-taUnMNcZVNesAp6qNsWL621jfJFA23pTlUmTpXhJ3KYxbF4ciSbXXKIG51AEsh+gP5/5LRm9B74fGbgT98EUCg==","shasum":"aa761b25b6f5fb8d17f0685a9f3698a4502394c7","tarball":"http://localhost:4545/npm/registry/preact/preact-10.3.0.tgz","fileCount":90,"unpackedSize":700768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOHFlCRA9TVsSAnZWagAA9F0P+QBCr2J6Jtz9vo9DeDSH\nAgKkI1gkvlcE1XazmhgqnSE7Piry6I7tpeWejMg6HdlyP1ELik4+iI4c2NxY\nLR8KUDCDJpKmSg/aCzphvSbnzJFsbXcRM08DMsZvKBKQ5vJlP1Ce5uukRB/Q\n4uCgSRsfGgRqDvt/1j28JTqd4i8tVnYb8xoag7Y9r+B35brYUQWjak6F7E4O\nWCUzaG67KAhY9+hHDql0N+K84LOgYr73M/48yabKqAyXHd7oa4BMO35nNVgV\njtnp1vpqc18am3HX1mJs/BdZJYMddqUyPmqwxTFY4JE5m8RHO+cEgFb8w6zR\nFdesB4uWggkHuXBXGkSbEcc7iQokENzTcYOwRcRZxmlBLdEPdzpH3vGcd/mw\npxREV5WqnfbgoDhMs4BkIGz98c43BWYf3feFGGk4cvOEprDSQdto6kpGQNhZ\n+hYhFy8wfMzaTr05t98KB/fl2Gm3gpDKU/GTCmTJcFWMOl7TX2QsmeUM/t6Z\nifWTgzYg2O4Pock9bir6X/36AR8sLIsb85jMNu4zfwUhP47TdIDdGWieNTIa\nyhTzUoR0VxMAu3Rlge3m8nnU65TnrxOlgY7hQvkMWS1FyTaDZJD/BReMirZB\nyI+f7x34rgkkY8aADrsNzW4Q8kz/cIdi8IRfwjwKTPO6cJQNSPmi2cUnnUT7\n639Q\r\n=GCTJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeDDQqC/tM7CAbBciQXZcB1s3AnPl9j35iBW3R8CIcggIhAOkb9IIFSrOcsp4S+bu7WTw6v0+wDwpH35mMPSxxg4uM"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.3.0_1580757349151_0.03703945202290626"},"_hasShrinkwrap":false},"10.3.1":{"name":"preact","amdName":"preact","version":"10.3.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"require":"./dist/preact.js","import":"./dist/preact.module.js","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js"},"./compat":{"require":"./compat/dist/compat.js","import":"./compat/dist/compat.module.js","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js"},"./debug":{"require":"./debug/dist/debug.js","import":"./debug/dist/debug.module.js","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js"},"./hooks":{"require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.module.js","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js"},"./test-utils":{"require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.module.js","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js"},"./compat/server":{"require":"./compat/server.js"}},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"d4dc39ec2178c0785d4a4cfd02ee38f3db177568","_id":"preact@10.3.1","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-CaKtEY235GtuypRRvaMxM3PNy44OzQj8BO7plXbPwF+iJzNnUufgHtqRA6NbjeWnfy+cN1dP1MFTAGxJmCiPqQ==","shasum":"70a2cc5484ca727c992216dfc528907d240e0a05","tarball":"http://localhost:4545/npm/registry/preact/preact-10.3.1.tgz","fileCount":90,"unpackedSize":701667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePEviCRA9TVsSAnZWagAAgX8P/1yu6AsCTWXJwTBnnC3Y\n537gXgE1UH65cVLX1u9G54I8L8u0bXHdi8a9M/o4yJ1sTfRgiB9/OZ28a8Ru\niVEhT1mF/fjWCCGhZsioNg5UgItuX/7VpYRyiqBJ7AvOauThtap3pTCe+Qh2\nhxiKTvz8avsvaNybJxBlteRkWPbTw4kAvABb7wZjeyJ7upTV6ZrR1ezDrSTW\nvjKi9QlJPLSAyN/HbPDenIf91A9mhqv34p4X3OioIY4D4Bwy2STjrWbkyZ4O\nBKehLPTuRttwgUkl+dqlSF/UnWZtgSMJM5chvRo3IWYjMZLazfEzHSyCurH6\nufsda9JR+KBxVC139p1vXP14FQXvOofbXNw+YpBOWfWypXQEGcAcXqcK2i1t\n7cKHgbnsy14eLcBPJSj0Bd7KUA/8VEhO/8dc+MaMlnVQOJTsaOa3RyELA/cf\nSWakd/Sw27kLatm8CDy/Kn1L0SZ5qz39P7Y0tfsvtUdZSecLFVUb/oWB+jMx\nIuq2ylJHz0AE4jY0U6HjEuyPOA/NkJRyhQChpQFA9EJ7fUAZC8CEMtMj2whf\nkOlGeVK99You1BEuH1h9Rhevcp5Qhxnx5QO1QtxFh250fPaEJ0cO1lvESzuF\n4se9nrdKt96ShPBgr8ILxGAgD2Rq7kqVJM5ItaQl058vMrePmN8nNjmfC5X7\nfuVe\r\n=3HmN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHAQaYg5+dpZWZkYCcyxQjXFZRTsdHXmSEE16IrPWEP7AiAxa/QNny1YqClSL3OcaVsV9ahbYpC4wvlqf2r9ZS59pA=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.3.1_1581009890359_0.7829952476151738"},"_hasShrinkwrap":false},"10.3.2":{"name":"preact","amdName":"preact","version":"10.3.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.module.js","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.module.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.module.js"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.module.js"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.module.js"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"796da5f765a2190e1b62aa57a173a1c5bedf1e56","_id":"preact@10.3.2","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yIx4i7gp45enhzX4SLkvvR20UZ+YOUbMdj2KEscU/dC70MHv/L6dpTcsP+4sXrU9SRbA3GjJQQCPfFa5sE17dQ==","shasum":"1dabd1747b54de4e6820c7d2eadbb8bc4c2e3047","tarball":"http://localhost:4545/npm/registry/preact/preact-10.3.2.tgz","fileCount":90,"unpackedSize":703922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeR/cZCRA9TVsSAnZWagAAXW8P/1fzmnZQuj1wgeJwZRPj\nxXMt8JKtHgYAyPKN6zmSkfQyHYzqDzORUkup81SWUGAyFgHw0u29hZULpBN+\neoH/hugdblYhxmpjSAG+H4VA06sjGh37/MS5PqAobxSWVkiYFT1RMKPcg9TQ\nFE1JNCd0an5X0A3WWH+3NCLh60QwqtH4hrnft65hSy3YHfLAEx4fXA6GfE9X\n/X1vpb91W04BWL/x3kT2Ev+E1qmbN/Dgs+c/y478Ee97iTt3B5eGXsKVVyce\n7SWHQZ4wpp3hLkox1K2aCLK8pTZ2kZeOdB+7tzOXfoJyPdkyDrCSA1kmjHoB\n1MPq1OcD0w9UQjh8hD3Gb/R+m07e4LayE9SoQajWcBOPwciCDgSZIAR2erIJ\ngCMmdcKUPSWnaWUk/J19oRj1JtRQ7S4Sme356/vZeP1IPWbkm40P8PnS93YY\nql1Mz+U68CEjtEqS7gchCjokRi293ocBViZnydoKGXmKX6NTBitKI2rvyUmI\nvYcWEaSC9p3vT9Bk8+IBG0350J3qSW1TGTrXDzcYVkPspSwACwt2RuoQdKBK\nBxbeQT7kLqRXFAqiVDYo5cdk0QjAlsQ7DxvqQGDSgmORRUgCgdS+kEq9Q7SJ\n4zCV0GX2g8ScpzYEkh9n59o30v9xkZ3UhFx5DX8o4QNuvj+VpObkqN0ILAAC\n0Bo6\r\n=Al0a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzB8T0BUjkvNBRy1mcbzTOpKL2XzFI6Pr1M2Ol9UnMyAiAycuR+hR3EHpX8z0+wH4LWPoZoFoqxwK8TjaynE2If4A=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.3.2_1581774617089_0.2407585954182978"},"_hasShrinkwrap":false},"10.3.3":{"name":"preact","amdName":"preact","version":"10.3.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.module.js","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.module.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.module.js"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.module.js"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.module.js"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"181771d3ea6ea1d98d2b49f5c943e97bac40b53e","_id":"preact@10.3.3","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-8EWUuHuLhX48uK0acnnXwBL/ZyrgeadnyhxG6hFI85BhwmquyGwWzfj2SylCNdEyltkdgbY3FZzQOM2mG1leAg==","shasum":"31a949cdc89dd1cf72bc2b94f80ad55d1ac8c7e6","tarball":"http://localhost:4545/npm/registry/preact/preact-10.3.3.tgz","fileCount":90,"unpackedSize":702866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeW/elCRA9TVsSAnZWagAATnsQAIeJ9A9ACZc/iUkrLeYm\nYnv7n3Eykc/GuvN+8Ce/RPLU8/QS6nasygL4lqAnQU/XRBYzyDOF9vWvIu9V\nF1gxUOM8EgGaZwOrmiOy6I3DD8PJdfwkLFTm8lZUlO1Ux/vZaDYP3yQn+9ar\nTXsIFn67vkSXOeiro7u42LXmPdz19XJUlnTbk4biwY6FODGVu3RvbZp2oHN1\nPBJRqf0wJ2cs5Tp5Fbw/s6HVFxp3HiBLAFQo8Cqe2FYghRYKCLrfDc855NqO\nl+vOFqkw21WRy8+OI+Y1KPLiwfSkXOihuWZ/rGY+vEfMCBqJYLFIf+XUk1Xv\n2fIgyHd4GoqdhACsJKgENfF8DfLf9LJYzgEgkTJHgAlJCNhhPFcy+VZEpt65\n+zjr/QSnfNw8pF5sHlU2GWG05//F3dFgdBdeJOiNANCjdoEGeEXNTbL3HaWH\nP4oUeyjjxX4t2oeatR0Obt9/uYMGNeoRJUDIcQuFp0Cg4by04FH9nylWb3XV\nMbTapzlp1bWOqNVWwi6QPHKEZ00VdLtQTALZzn2C+lL7EoFgCTksRvJDELMD\nEYHuupiJ2GCgW4b6U4iuXv4EJQTC2q2ncg9gLy1JfcWDBI76uFEvnXfau37b\n2skQs0z1Nhs+VFpdICQe2mtLxENjG/8gizikF0/vdJAkwzhuePN8M6KZMtoW\nRNgo\r\n=PkJ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO4vQRHfLQYI1rOb7HnOqU1KiiKbABOOUSbdO08Ji8/gIhAIaBpL/54h7IPMEGLNHrQ7MI6C33oDm5aleOqXnp6yvC"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.3.3_1583085476374_0.9645932032289157"},"_hasShrinkwrap":false},"10.3.4":{"name":"preact","amdName":"preact","version":"10.3.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.module.js","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.module.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.module.js"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.module.js"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.module.js"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","travis-size-report":"^1.0.1","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"0ac48f0cc0725d16cc698843dd746f675338c4e7","_id":"preact@10.3.4","_nodeVersion":"10.15.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-wMgzs/RGYf0I1PZf8ZFJdyU/3kCcwepJyVYe+N9FGajyQWarMoPrPfrQajcG0psPj6ySYv2cSuLYFCihvV/Qrw==","shasum":"e1542a4d3eba3e7a37f312a2c331231b97052024","tarball":"http://localhost:4545/npm/registry/preact/preact-10.3.4.tgz","fileCount":90,"unpackedSize":705723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaTj8CRA9TVsSAnZWagAAE48P/js4lhJoqf3UMaGDqBf+\nbZBUSj3DudeQ7lHiF4D2ZdtErDWGyNtFz4cuu6VNuZc4yvgN+oyQjM3/R+ew\nNFjC2Rv6FbrNecTtnVXmqM8j9iIA9gWzU3hHqE6T/mYNB/xMuldAZndnZfEf\nGotXPuFzyZ4aYDNw805Yi8aLzXhtfqON40hWxt2yOYENfHm8fq6x5+mstbGz\nR+cN0O/7VBk8AwcmEYrCX815tYZPChyACoIxXmfNkOCOo5n3LUJgimdqJkm2\nPD4U5DOoG2SQnRXPtltUzTgbBb+PDiGQL5X8N9BB/nASQnFf7R1mrLJSB9hn\nAowwOlIF9MALnuISf5F6HtjE8TOboYNiVGKRTqkZoHOpQ7iqdbaKMbUVOo+/\ncbO4tnniMJnQ6hC1hotKR1DMp77wCeuv4gyPXQtn9HKW34RlCcBp7q7Wi03M\n9JRxNerEX7/qYPBNl/MqEVm8snXFXWAVClM39P8UW+ovvZvT+7/DGJcAO10+\nFMnoM6KEhgYriklB0XCxM1w1BKyHOuX1lu0OKBrbHMr7tPHGLoiarRIthMV3\n/V3So5pw3eygNjM3RimOIWoLrlxjUE+Ypke3+FB4dNts3RD6PuEfsNI+vVPE\nJ37tL6e8Gqw1zGBE2lPvn3dK5A+yjpk68rFtnEC4LIYpWmqhI1UtgSUdZXRP\nuQsf\r\n=68z2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvZqeSKuyQ2JvoSDjafcpYcMyHdqjtVhX9XOl9mkgvawIhALZinm7NFIUT1HM2zJyakMqJscvuTL2yug2gmm7VB7Ma"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.3.4_1583954171896_0.5666895037418427"},"_hasShrinkwrap":false},"10.4.0":{"name":"preact","amdName":"preact","version":"10.4.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.module.js","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.module.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.module.js"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.module.js"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.module.js"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"build":"npm-run-all --parallel build:* && cp dist/preact.js dist/preact.min.js","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all lint build test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"7c180cdd919a2be5a5332b45da63f04988a7bf6b","_id":"preact@10.4.0","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-34iqY2qPWKAmsi+tNNwYCstta93P+zF1f4DLtsOUPh32uYImNzJY7h7EymCva+6RoJL01v3W3phSRD8jE0sFLg==","shasum":"90e10264a221690484a56344437a353ffac08600","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.0.tgz","fileCount":90,"unpackedSize":716542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeja/iCRA9TVsSAnZWagAAe1QP/3rBY1SF6HMi7Yi9CSyz\n8acJ6kDmQmg9FF+597Rz7SkxCUzKYUaEzei0zHowbSB0ltaDIHVgJ6X/gEWo\nwkJur9WxtoZsnnNsehER0pIdXHLXwrCVmEKRxEj81520TYEBVP7/fJtMfdBs\nZfpUZHn8BWHYbEUjVc6TNFsEmPHKBfXbgGf+fKcdWV2WGbDT5OTlTayOK/if\nIffuz76ST/ttjIuKgjDv4Q7J6jwm2CTtRoBm17oUlN6kdYp/WNVXSkJAW3J2\nw1fsM+9gpGRTqRnXzoCxL8oq3SmH2mGiCM+sZlEtuCnSuO70tH0DW/NejXdT\noPi26xY73UDV4JR80ZgK+Q/NWvMTlaO2EDHf+a84ZVEwuRmnYlILzNQaQgl+\nPnipxgU/ehgH161PpW92FLpvcZmAdcR/8Y89xzM9EUU/VvbPpNXpZr5r9Qc8\nTnE3Fykmmc0bkvefVCFSbFgCqkthaUQoegGpXarbMgb72b9k3Eont2jiQbNw\nP+vrSTIXDUBmpnR9u5dhQsM5LwFYXL+5A10LGblsebv+iCL8Pi7Ym0OmeOue\nUX9/V93eIzPCrBX7IYdt38Fle6DsWg5H3GHMzw3FPK6T5mqRHqvh2gy7hiCd\nyFjUArHiIpzC0vwCRF6GayIRy6S+Y/wQbeDfRAZT6ps1cldLUutQJvhb1O/x\n6S3b\r\n=pRRF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+HJ3AU5VAz00wVipRh9h0z16oA3iEqhx78c9AwmUm3AiEA/hRbMM9DxuPqY/+O1y8EaTpGSEr/txyLZ4ei/BJinvY="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.0_1586343898123_0.02892852320869843"},"_hasShrinkwrap":false},"10.4.1":{"name":"preact","amdName":"preact","version":"10.4.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"6a2bcec1689be57252aea47ed3f441603cb087dc","_id":"preact@10.4.1","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==","shasum":"9b3ba020547673a231c6cf16f0fbaef0e8863431","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.1.tgz","fileCount":96,"unpackedSize":753006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenfdZCRA9TVsSAnZWagAADf0P+wYUwFhK5sa2RGbRsDIH\nO9y3j0M5jhD0XOrzIQ6u5ZX5LkuqgWJspQWEPlhkQEPUnOOztb1IyP8HgeRA\ntrf0PA/3aMNajOWuZYFgS6qGKvovJtk2wl/oGCQHy/8bRz+8GWMohFoa/IOm\nW4ZF8vA9Oq6DVTPzqzLiIzdqVcv9UJpRp4DBP4T6eO483vboxd2S5488PWW3\nOJYJusNbV5V7u0A9z3uN6EKNRvxGXRYrUw4hHmCvASp3zFhsMfJQ1eiU0+NZ\nUdmHhvALDt3PM8YYMzmsVj5UPANdjlIjlpVChOU36oqVO9Rs487mq+XE51nw\n57Sp1WFK8uaFGMiOglYILsWrPYOXbZljgweh3FRegaFFr8VIzHS64BGWr5KO\n5Bl0Lj4XojzpGUU7IOLDVWtes3muvCM/AzIwKkUZBKfiA0FG4RMvnVtegNkf\nqHNah+ux3WmxrK9EjhI/UbJ3EwRUOcPcsJya6LA2avabv0VLu7SrimhaspZb\n9fZnJtU5O1RrMIyrCE+H/MBWx0tJN50g28259imsxWCeKKWgeeDvDQuiQ9vL\nNWHazlxHTyxdpJS8nO316TC1K2iqvUJFgHwiQbOF2Ihkf5Apqur2bdIMPpUm\nnz5wLubJsaTcz20kaCCcSKRSXTnmgx85g+fb3kX4BlUFgZaTHbHYTDkRVqE4\nsz/I\r\n=IIEi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxT+VwSqDV4/DL2P7xFasC9LUe2bo8SUykDCdx/8LHUwIgPGx3NjZXPPjN+tFkpvHDBFs+XkNu0J6ga8+POZY1gDQ="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.1_1587410769670_0.9719607355082707"},"_hasShrinkwrap":false},"10.4.2":{"name":"preact","amdName":"preact","version":"10.4.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"9c0b8e393642485c6699adf693f1967fc968da89","_id":"preact@10.4.2","_nodeVersion":"11.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-AD+hCTD0uTRa9bnJIZI8ZDy7icnVJiLCntyYCWGM5qlXB+gVzmuTRpWHlVqkcnwpsX5aakEsNfj6Ot+b8Bhp8g==","shasum":"08d344e7b97dc8b6f416ef680c54d6c9eed672fc","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.2.tgz","fileCount":96,"unpackedSize":754566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewsp8CRA9TVsSAnZWagAAT8UP/j2eq4Me7q2cuyo57Cnr\nY+pZASSkr+heTxV2Gw1D90FYQ7ZEmyZAProK7upEd3H9bFrWfO+CksZ5gAxh\nEY0D2Xe60z0CetNbIlbjQu8WLLlTDg9pTFuu+Io1wXKXkaigYQDqO03crylo\nLjdv0C22MxreG4Ls7m3kpLYjR5+nMatIDyXkmKc2Xa2F9D10iww8uvka9jaJ\nzyCu4xb+CXZEMI9GWMjrx4zmibxuSGdeE462NmKek4cto+mfv5gl6Bwn0mZf\nQAF8KoQhegKhrZyP6vHV6FkPcVQbuxaGdGF3sWc9sJxMxruw0+PpbM9G1RBI\nVqct+sOPwudmAMAi5Ywb5/1fFBmPU1K5gd0S0Npmw4AqrlUE9cfpvt+kkfis\nNvuERKlyzYuX6NuIKEOUmCQFA8xJg6cwWoXmBY+UCifJokRGtv+JUwm5336F\nLcVal5YB7aIlRIWUQxSamhMKqzTwL0ioOErQzHJ82ZbmWx14/ZNGriJ3MjzS\nxbAHysSSMq4VwWSThqgQ9fb/41hYbbygUgpwIL4tNNoh3RqA1xHg+yuBZ7qe\ne9OpbtPXBhGlXy8n+i1btxF4Z5BVS4NNyKdNPU26PAXk9ey4G6Qm7cX0IBdC\nVeYm5+dtVz4AOrk6JuNA/AFgqUXO9WWWIYNrMkuQvLOxxpYUChQm84CqAXeS\nK/RH\r\n=B9Jm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE1g+Csm43LFibt8dleYZe2ZYUO626Y6tvAB9fL31OO/AiEAzNOEmj6tc+v5osSWqVEspWhNSpiJCSOOWE6symg/Jv4="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.2_1589824123923_0.6282342117780304"},"_hasShrinkwrap":false},"10.4.3":{"name":"preact","amdName":"preact","version":"10.4.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"b5a0cf946f153e1c65caaa79557a65dec6326eaa","_id":"preact@10.4.3","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-w4pFKgxF1qznYzOXTwrHeY5YFe3YOxYx4Wm5HAqMXzgecf8SB/vVHLPWIb+lz8no8Pl2rxJme0SQtUtdAGHxiQ==","shasum":"d42ac9593ba8983b9400266a027035a6a2b5f73f","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.3.tgz","fileCount":96,"unpackedSize":757587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewxe/CRA9TVsSAnZWagAAlwMQAIjHZkTcvIwgwds2T94C\nH+DUTck/fdxypnBHP8VKOsWZoBVZ3JvqLMYdJDQqLHVTb3aNzA6zGG03mQsJ\n2kczNsMQqhhFt9HK7RZyJ7Df9dZMw6NBRIN1VuTEfhn4PFNKNEs6dtjOLgQ5\nmCo7aRdHw5wY1pG8+I0y5U8o6PW2Do7NaEvPRcfDQIPFlYzXLOHw2vrbJAl7\n5E+Xpuqza7FBNcY6rwhq0uNpmdYAq0rLRH2GhSL4WydN/h5LY10SoNmzA8Pe\nZv5374oaM/4hb8xcs+EUwyOHXXUju1KjC3jCxxm5Ot4q83eJdUNaO6DCSjdY\nclTRBrNX8f+Z2gooPubAtq8SbuSXJdemk2/YUIN0XSTvGEeLvFlv6dCIeYxi\n3ccnUyoLM/wdUmaToi0oIY6a9JaZFWtLkh+feQsmshpEgHltoZ/R+n5e+QVM\nckXY7jAovjzzEfmnix7xe2XpuS4ebQVPXaSMDRGN5+QY82cVigy2rZeXXe/I\nMvNNUiB8yTK7k7jvFQGvyX78lYC/pcSJTZ184O5Ndmf/GjLbB1wOJOPZWYlc\ngEIGeyf7SfLmK11fq2se0ayeCionJ0Cw1vQ51BpQGGU9RSUahaxADezuq0Ro\n9RU1ZIwqr1OO+W+TeQZh3cRX+tZl8xV7HgNU6DLay+LM56/lqCqSPIQB2q0A\n1UGL\r\n=0XdQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/HHIc+SDTmUif+fzMV2c0ZCysoZ/dTyd508jXs6OVlwIhAN4qvFGNuXADiHSFBWENqBIWvGvV8XKLcXFSmOeDpjpo"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"developit","email":"jason@developit.ca"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.3_1589843902829_0.8963749112224175"},"_hasShrinkwrap":false},"10.4.4":{"name":"preact","amdName":"preact","version":"10.4.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.umd.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"^3.0.1","webpack":"^4.3.0"},"gitHead":"1834cd70adf5758541d6167ba8c2c42778443d04","_id":"preact@10.4.4","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-EaTJrerceyAPatQ+vfnadoopsMBZAOY7ak9ogVdUi5xbpR8SoHgtLryXnW+4mQOwt21icqoVR1brkU2dq7pEBA==","shasum":"0bd6d759ec2f8684aaf8c63c7f076191e46528cf","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.4.tgz","fileCount":96,"unpackedSize":757587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewxl4CRA9TVsSAnZWagAAiycP/RzblzSXQDGkYL4p2Ltb\nZCBCzV0NG9inYHAfHGR7Mg7NSwqHyJi0auRFGjJnb0ynuF+hOewFheCEhjI6\nFOKZSHi1r2VtsFQUEpdLNh9RbZ+D0FmSW/Il3KDf7FnPU/B99iWfOiEvBEXf\nc41ds+6Cfbki0+dDD5w2o+Ruw0qBLfu6/77rM2PQajG78O25mcvHlel+pT7I\nqu2tx4NUkpkugIjbe0K5eOlWr1Q6OC+RaCV0XPYRFob4YyV9JNOUgN3BLu6L\nXJJoWvcQYgtVi0MNREjs2YO3dPg3qIJJZsFWPiGmYhHGglomFulmiJ3VGge/\nZ63BZjH4EQhZgSY/m3niaJtwhzMYmgR6sQ5zxsjVghZuILnMiwjF57XSQE+q\nmKGaMtxPShV7JNJShP2HJ3tEyZaCxSIzj5R0O4GTLclnLVDSDYE0bOg1rWzr\nHYD1Lqu3kr/LGqlYgocsKu3DUaSPQz/pkGVQ4vofRQXKFKOfeITDRKChogSI\n5HfOdyb1dH5xthtHb8GJU3P12SLnMaXwNJBLamOCMYLNEQ5gOzALaFo1/h3T\nzJ3xbvRWC8nPtrbQUHJOvegRH4fgwIJdkN+EvTxn+jDlP1i7hUR0HzWirvL3\neCHsWH1azSXGcQzrtgfVhkpgrJzt6IkbyMiezRpX3g1eiIJCUITmjZaq9xNd\nUOMV\r\n=pSGo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuAW/jZq6eellqPd3Vu6xnkIdIIWdmawLt61oCXpPdEAiEA+JNs6WZlxWt+UcxEhq1VFPZJ7glfpQ8b+P8CXSAyJxE="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"developit","email":"jason@developit.ca"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.4_1589844344222_0.4398384759134131"},"_hasShrinkwrap":false},"10.4.5":{"name":"preact","amdName":"preact","version":"10.4.5","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"e0c97d2f76aaba5c46fbbdeec7b4d3fe8f0395f4","_id":"preact@10.4.5","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/GyQOM44xNbM1nx1NWWdEO9RFjOVl3Ji6HTnEP+y9OkfyvJDHXnWJPQnuknrslzu5lZfAtFavS8gka91fbFAPg==","shasum":"457fe034d558595864d0663574c2850f0b43d28e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.5.tgz","fileCount":98,"unpackedSize":821325,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+4xRCRA9TVsSAnZWagAARFIQAJFsDTZl6w4x4EUQvYj2\n3ICXWyMzj9S2llvcg0Y+49vDa/9UEvgkt19hR6cbgyUnYeD+m1Ia5mj69vGZ\ni12NrUNsNd0AORf2U1uC/lcfOOIOPwBGz5pQ4kPV6is9DvqhSBBoMoxJENDC\nkTPQfJpgutfUXBNLzHtY9PjVrrSfoxNqSoH3l3HHF7wdcCPuqJbmXMBbW2vY\nuP1mQZP0PXtgHW8gUKLZSMbsbtpbkXf2c+Lc2lpeI7VgNbKt4SQrdD0iJqLD\nF5NCXHHmt6hZMqVdqnzmeuyQTVSdqiuTeeMIpbmGGiJcBqbUXVJMNJBhBH6o\nLQL872vpFCftHv1z8fo2cXX7yTkwItjsbXxu9wwOXQIgv6XbHW6IvZj79wPD\nfent6TCkRxV1uBxtxWidCCgTz23jgodcYPtRDDpTFGl+kOIWOCySPcaJIXIu\nlK7MOMLIEfrPKrEsZxjl7nX7KO6CvUohOO4qqBQnf+hBsEqFx+fqQcFx2ogf\nQ1/O2JpoIBHyQUAAgQoEtPx8S2CnSNC/+xp9sf8g87tlxU2ju221powyWo1A\n3qTOKZbzNgwD8X4BN89b0IWGnNnPwYWSR+Wp+vaB+kMqpuyl0qoQkmvxHjqU\nPDvzgAJgeSzxopCieGk04V7+GJBvW2FOyQDGUs72SavCcoMMbOrIQ0RbSw5F\nOJQe\r\n=CfRa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBpZyoZ/98o35T80ewkjUbRIr0agV3tQm/boX1EtsWwAIgcGw0W3bvj2SdbZuoDEHsGDxXz97mTrGUW+tLkfmIaLM="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.5_1593543760582_0.721590612585433"},"_hasShrinkwrap":false},"10.4.6":{"name":"preact","amdName":"preact","version":"10.4.6","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["Jason Miller "],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"469da09b027edf2ed398c2210316f2cf816215b1","_id":"preact@10.4.6","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-80WJfXH53yyINig5Wza/8MD9n4lMg9G6aN00ws0ptsAaY/Fu/M7xW4zICf7OLfocVltxS30wvNQ8oIbUyZS1tw==","shasum":"86cc43396e4bdd755726a2b4b1f0529e78067cd3","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.6.tgz","fileCount":102,"unpackedSize":825702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDdd5CRA9TVsSAnZWagAANikP+gPNyZGeritjJyNmDE3n\nNnUlNe2/9IahGPVwghY0up6mwbk6pz2cmPYDqy27O7bcla0wf7FY0Bwe/kG7\nch83kDGtaYBTPoFGndaqYwUc3iVPUkl9eL6SVqn3Na5Aoano/lL3Zp+dXRWI\nqTX3SeMG+bo6qy+qgB/IMrHcyy3sDpteNbRWuH67MoaxcoQctdPgMGzECg7k\nscePaUZg50aYWys4mUyqHJnkOEUeuqhzjdWBFgC66eXorL0ii+P/QXRPwKKL\nQ3mO1cex0kd7q5Fha4u+/+0Xus2oHtEwlkAXRk50WGGYpCoZBov4IUUmARNr\nI9rSq73GtPib8udowKIgMadkVTyg73Y6q5dfYCdeIHu2PuzJzSJpX7mxkQ+k\nJruSS4EF0z4+7VyJLYpT4Q43mSCw4SQIK9fwWQS9i9EvzFrDBK+CFwihK1Jc\nFD1tSR5OsCcuVX2qihUyHdriOx/wf5i0iQ3cEVtznlpVLhykzMVnD7W0ny7i\ntu07fb4Tk1JknJBhVAz+3hYmGfSKC+2p2CodjRYI6ndDIVPd7hikFFS8vjRL\nGlRGL6UEQhBVNJ5bRmVio0QEaOt6VQ9v4gSodInNe7MoM0sH/G8Ijowbz7+j\nW6o4aqj5KhWwecXQKwL3t6Oo/hJNurfSY7Ir/dg55NenMUfgeqmo2AP8HCYN\nCspV\r\n=saR/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1BQY6GZ3ZZ73W7VSC8b8vophNacUyfo0uiHjZ86M91AiBctGvuSXwGbDgsGnjd4AODbDZQuO3fYtBOhWHZWjHc7Q=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.6_1594742649187_0.27876706151960695"},"_hasShrinkwrap":false},"10.4.7":{"name":"preact","amdName":"preact","version":"10.4.7","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"59f7c8ff0b0be49b1d6d9b4f9e53bd79e9716437","_id":"preact@10.4.7","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-DtnnPbOm7oxW7Sxf5Co+KSIOxo7bGm0vLfJN/wGey7G2sAGKnGP5+bFyE2YIgutMISQl6xFVTsOd6l/Au88VVw==","shasum":"5a530d34b4ba45f38234be8b1b3fe910098a165f","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.7.tgz","fileCount":102,"unpackedSize":832948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKyKTCRA9TVsSAnZWagAAGh8P/11tQt8TNTdQIWsAkAPH\nHc+zSAn244EuHCW2vnUAh04Li+onCPX3ae1I1yHO4V+w0QXbPIGpsB+FqgUN\nKdpgkjPaPGbJtuAMQ37ENcOlFk4rBXDgxEbxBCctH6wktlswUL/uMeWhzTzq\npbSTh9vw4Ga4FuR48/Lm3YwgWirL/vDIShZNoE9Ix6/uyuj8O1Igf9U19OX+\n1DPEvNAhcVd5D/oOHoDj0R5vQn91hAIhldMwMgjSMz5RLrLStKCXs4yUF5Z1\naSjBRbtipibsoTBQBrel+ka98g3Ui6tW3FNQ939bjNtXncKC6ejOPDeLtjfB\nkalpky2ovJdODwuizVHj0H7PV6xcdx3fWnDgmnkQpoyx1jhgVtNOeAe0mriD\nxveX3fbKSge+2eTHVEaPKWdX6PT3pvl628tuSICa2Tr0/9F0in/VFxN+tOEE\nefDfWHba/8TDv+nXt52LZo5kiuoYTXv4Ab06ImuU42sg5d2zDokqwCOnL3v1\nihDJ/iqjp7m2NSqTgCscGa6ZSJDrvDyPmCeT9zhsJ3ZMdsQ4M4FKX1mmK3Bm\nHmWw+CLgFQVLaqAXPpCIIBsBg8IQ2jIYVXqLbEbBmCv/CiNSz4oWOjwsTZX2\neBpOtTZs/Qo4Qf1/X4nLxkSzKO5Ep3DhiEX4jzW5EOUK6MaUwlvFTLNdgUXY\nYBDJ\r\n=EfW/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBzOY8l3r1kTacdho8NAPNgzNMN1Xl+zQzpq6VoZbcMUAiAtpTq9f1+qws0zlqphpjUJ+yGivqr9ykbrL9DaWZ8amg=="}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.7_1596662418359_0.917400280875937"},"_hasShrinkwrap":false},"10.4.8":{"name":"preact","amdName":"preact","version":"10.4.8","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"a574a9ec4d5795450e0ac8de4b1ea669a34bbb99","_id":"preact@10.4.8","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uVLeEAyRsCkUEFhVHlOu17OxcrwC7+hTGZ08kBoLBiGHiZooUZuibQnphgMKftw/rqYntNMyhVCPqQhcyAGHag==","shasum":"8517b106cc5591eb675237c93da99ac052cf4756","tarball":"http://localhost:4545/npm/registry/preact/preact-10.4.8.tgz","fileCount":103,"unpackedSize":851211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRqvfCRA9TVsSAnZWagAAVzkP/jxtSkKc75DeATo3VdGP\nUGjKxQsATYWQU/cHG9hjr6E6LkztL10eljw19ZC1pzVb/SzHydFJYaw9fqUQ\nYAwsYfXVejWsI3KqntGicI1RCLVopRAPCDrydm5OgZAgJ2maPAi6YHCENc42\n8G8wa2hs5DzZyo5JXusyrOksHUyXj3ozx+iLulTZfS5U6r4M0cORZl6oz8dX\ntbptgiTnan/fYDJIkbTDtR7LpCmpw569YdQ3GD777H4kIMaWw2nHPIrGNEJb\nuA4JkoEIAvb/+Tcwi3c8BONb5uwvf8h2zsNSLjQ92W5p1QPxsiESMJYk9UCc\nvbapIrMaK39MhUezFqaoJLDpLD1vtQDgtW9fiigl3Vkqo+InnBVc0+J478EM\n65qcCicMhdMdL3VxfIFRr+TeuQ/KkOWGlNFY6Y5jmQU7B3QrXFvlHFA4hUWv\noQUkPqvpQkMOX/xjfv3E29xMKUy7m4tt/DvTMBn6PGovJIV2bePtY4x1hbY6\nlusLISBkSBsy9KASKWdR3DLXCJ+9hWXvyox5/nD+fBrmJmts5ygDpJswuLue\nofKDOwsrwp1m7c0Q8jkDeU33OJnE8Etc7jtWQVnMPGiIYUHspIX5FOOTLBU+\nXf8uqFEqB4XObAwJ4hOVjvpEBLJORfzL8yVfFxjc27Kb6U8CkHoeIpkPHUQ5\nrQW8\r\n=EbNU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3zis8rtdLEE+wNymPBUshV+I5+NTX65WCeVk32a8VfQIhAJ7m04BQglLzrJCld3qWrZwMWDMefzZNIvWSWt7ncDqX"}]},"maintainers":[{"email":"jason@developit.ca","name":"developit"},{"email":"drewigg@gmail.com","name":"drewigg"},{"email":"npm.leah@hrmny.sh","name":"harmony"},{"email":"decroockjovi@gmail.com","name":"jdecroock"},{"email":"luke@lukeed.com","name":"lukeed"},{"email":"marvin@marvinhagemeister.de","name":"marvinhagemeister"},{"email":"prateek89born@gmail.com","name":"prateekbh"},{"email":"hello@preactjs.com","name":"preactjs"},{"email":"allamsetty.anup@gmail.com","name":"reznord"},{"email":"robertknight@gmail.com","name":"robertknight"},{"email":"solarliner@gmail.com","name":"solarliner"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.4.8_1598467039352_0.8686637623716789"},"_hasShrinkwrap":false},"10.5.0":{"name":"preact","amdName":"preact","version":"10.5.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsx-runtime.module.js","umd":"./jsx-runtime/dist/jsx-runtime.umd.js","require":"./jsx-runtime/dist/jsx-runtime.js","import":"./jsx-runtime/dist/jsx-runtime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsx-runtime.module.js","umd":"./jsx-runtime/dist/jsx-runtime.umd.js","require":"./jsx-runtime/dist/jsx-runtime.js","import":"./jsx-runtime/dist/jsx-runtime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"d7166c2a3ae35583c2efd56bd5a416d686d6624e","_id":"preact@10.5.0","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CuhSq2uq1lUy9442j9Jlucapt8+9SFyNl1+evzbMb8dTF4GCPrc1XMvf9Hai7XbeXG/wIxR0TVhhEFKJ3DkY6Q==","shasum":"03387837e7174fdca4e7083baaff5bf417117639","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.0.tgz","fileCount":102,"unpackedSize":859527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaywVCRA9TVsSAnZWagAAjqQP/0u3n8wZ5OeXYP3WqTDe\nhuFteVk6v7pk93DlNpqh9KGsbFaDZUWiwmzZX4ePCB1aQfcOQCjFsgcPUG4l\ncmmdJpoxuN7eyo2oZV+mylp8a75WQlJG1KymagfbxGGJNPHjsRQMGY6cGIwz\nIUcOehJEoealfeDrlFu+tiP+xXDqXJxmkH4ODbDUhVcIr08BsfoX3f6NBcRU\n1WtU0fcJMLY9z20346n3PBFXIJS2PDyuI/O6UJQ1tbDRLAHShMaJxSA9TxYB\nRGhlgiFZoLJYM1pSCHXzwVta1yDxcCbefO83YL5IQNRuLWFYfEU1tV5rw0/t\nw0pG2qAMy4XzuBrMD/ggKxRGH8MlXTE1ZZKQchwFbGQcv87bhhDIQ0dWsYkN\njfrCSb42ZBBT2hlljNYyZF4UVILAR42P9wCEUgdeYIX7OIUdZNIXvc4gzYfw\nNZFS5fO46ANSghPXseLf5XmPzaPHjghQMFRESiKrlXDjW/hKy2XJSBHcL/K1\nA8LPFtyBy/4+/lh7nsAJY6zcakrUO3jnLTMv6/HkJaW4IQBbcJP77w180mWe\n+F2Y4lE/VSqXN4FALFfDrVoQp5yi5mAgPT4TkF9/BBjXksfel/2k4a8AsKxO\ni0Y8onwDoDKbDBt7FlNy78s8X+6gU315rS0DTTXS2G+BNooOJKuUviP6hJYu\nb1KN\r\n=4IAA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDAGilKZpG7ErCyQI0diw6tyAWypYO2skHcGZwujLizhgIgDUR5cQ55JrWLfStzQFnk/oBsraRP/ofXdKblqSzmIj4="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.0_1600859157101_0.0588446807014158"},"_hasShrinkwrap":false},"10.5.1":{"name":"preact","amdName":"preact","version":"10.5.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsx-runtime.module.js","umd":"./jsx-runtime/dist/jsx-runtime.umd.js","require":"./jsx-runtime/dist/jsx-runtime.js","import":"./jsx-runtime/dist/jsx-runtime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsx-runtime.module.js","umd":"./jsx-runtime/dist/jsx-runtime.umd.js","require":"./jsx-runtime/dist/jsx-runtime.js","import":"./jsx-runtime/dist/jsx-runtime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"8446dcb6de9bfa8161989a8aeee3e047d5fe7d9f","_id":"preact@10.5.1","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-1wiYdNmUNu5QshBGHalwpIBd8Fdf9354NkKRf6C0+qYlIL6Lp86u/W/JaJWT/DmTAuAyRJB4O6oGkcejupy88Q==","shasum":"72dc1e383407f6ff4087a638853924e9e15aa71f","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.1.tgz","fileCount":113,"unpackedSize":871042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa02KCRA9TVsSAnZWagAAa4QP/j+cU/x3+baybyz/N5Z5\nSEl27CdLLFQY5RrOM8gw+oIk2AEh8sPRO6A9BCSenNDNXhVxCWhoRQOGFf5D\n5MLanb1hFiD+SQKINaHaJi4w6zWwdhbmbJw0XY68LXYIP8Flp36tccBOi4bV\nGBcerMvLA9Uw1V1ZLX1oUcDCXUo0jnX0z0Re8at0zb+reEWdlweCSC+0wVOP\nvf2YcJ5TagzwK9fAnaH4cu8aigXjSpapDCvVgJYewewEJrA8LuvxkhmmqSPC\nDTBq7w/0zCTtcXMPwkNHKNbQr4Z6KtJZSnMyNhAWYynZ5ZmCeulfX8gRxx6y\niBnYIrlVAWWKWF2q6kHQmvCYSHmcLKhVZh7+IGnO0p0D6Bg1vwgEPtpDjOEI\nirlmLVBKO265M6vfsXi4XTBUyWa3iOmG0eYN7KePGr25nSFDOw9ioxjdAGfR\n8uSMUX9G4yMx+oxQq45rcrC/iMbQEuOjYjPzmQ58DOEGIW9MpN2gWrT56u/F\ncUdX1byd8zZ8vtiz5N287ZmPJ45jDAsMLWzTtLqvqCc0l0hhYqxofsbMN4F/\nAGg/No1lx/zN9LTnzEUT5WnE3AQTiFK+zPFrrcIyhoEcTohxmbKthD0JSFUW\nFs7OrnWSngxF9IZm6n6ZNNpTk6Ch2FOcg40kcgy43oc47t9REMRlh7tEtrw+\nuUZr\r\n=bZ8Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIACIaGVu3Dg5OMQQuqo8ZG0QNlJIjM7QedP3b2kljMEvAiAWpIjVUeOrMga8IbEVERs0Z6E4NcA9uaLrEOjZVE4rnw=="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.1_1600867722257_0.36412683197519047"},"_hasShrinkwrap":false},"10.5.2":{"name":"preact","amdName":"preact","version":"10.5.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && node ./config/check-export-map.js","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"e32fc87cfb1b3376c3d6dd478771a776a135d591","_id":"preact@10.5.2","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4y2Q6kMiJtMONMJR7z+o8P5tGkMzVItyy77AXGrUdusv+dk4jwoS3KrpCBkFloY2xsScRJYwZQZrx89tTjDkOw==","shasum":"4c07c27f4239666840e0d637ec7c110cfcae181d","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.2.tgz","fileCount":113,"unpackedSize":871071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa1drCRA9TVsSAnZWagAAeQoP/3k6xLFFChU6bV1SnYkb\nTfLXTMee/QaiVmHupbCGl7LkNIMLKDrUJ7iaY0DoAG5Uj2E0Z4FdEU7Gc6dn\nSsINL6cQ0bxjG0BPV74YXn/GOhe2peGU9SrjtKHqUrFefPpcwLerDHbayQhZ\nV2Udr4/q3V/f/k+DQ7lMwbBLolo50Z0EPG4Q0BQCw6MHiJn19joJE3iAvZi/\nFI4o3Ps7tsSWwLMekGpXg7qlfGDIsxQqqAwmYP1qm/uCLIQYurkJMr2UVftI\n4yIw9BSkX7T23jGGX3AmaLGQe+HsGATP8XsUcdSUoj29nloQm3PeqG6oKFVM\nrurxEOeP/pBz9ZKOpba2trcczaKkKL6Lt+gyHpw5OnpxwFpIVYwN0E75UfWq\nFug6zoWeKjR1+3XY49I8echtdn+V7XnljBlozIsPUYnF38PN0SGq0SBiJwxY\nHS86+7+QCDcg6lC7maQKQejnnzmNl7rb1PeZdV7rdNPo0kyvGyXV+lgkoVQd\n9Hiebx0oL8UFDEDwRlg+4RWclMoFqMeR0FlxhI30OGe5LZh2ZoXech/JHaMS\nKHmTTdj4BsWDxqlYdEhaT5JYoS0449SZJp08irOYMBzSvhEO4nSVcTfDKncX\n/73kW3OIrJ0hPZhd1yHudYOL7QohRe69clijz9pAuHkn8u+4cL2vBKASzB2Z\nmln4\r\n=lvn0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTXWjhpn0ZgEzoiHmFTJmR1ipeW8JfamPeJBhzCCOT2AiEA0wmAwawC2UW9QhBJ9AJCYeZWxMIHadEIKxt3iQl7ntY="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.2_1600870251306_0.09622382276921226"},"_hasShrinkwrap":false},"10.5.3":{"name":"preact","amdName":"preact","version":"10.5.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"8603d70e1bc8098212f4db4542b0719f8409d3f9","_id":"preact@10.5.3","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g9i3d4obUJ24idLW/wuKWATVj6YFjxXDN+POu4u68YrI5dypUOu9Z3lb8/M4kr2dojcwq3H1GSgfpQkFX7y5Zw==","shasum":"c19d509f60e6adca5da8efd421706b3d0a1fb636","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.3.tgz","fileCount":113,"unpackedSize":872726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfck7FCRA9TVsSAnZWagAAArAP/iApN6I6f736+Dah6NM8\nql91FlzDdhCu588KYXlTWzGrhh05qAKNJ0osF0OiJLaWUKyunxjx5qz/gDoQ\nQiJzZAwXQzvfncLIDHdnae3LnNMq97YoAXM3J/ZQSQgYC1PTb3Zf4RuD/Ost\nOrV1tYjoMFicMNLBqRoc1Lk9zxmvn9cwRerIByEPSBAg57OV27r1a2AC80Ln\nbJiljrkSGWBeuuCP7E7GR99sXwciFemuOwDQQaNZo1hpUxLei6PCHZ5pUJx+\nbiVcpobcbWJxbCVS9iX0OVqMXeYj8er+13FSkbe7l2kSvJtTVdIwq9/tR3zL\nprP+lSu2DmhWu3EgJBWw4KrX+I69v0zVBmCIN4ad1Ar0G2Jy+lpYvicQamtV\nAu04lUX8EFM/t0xMGEq1gwXJKh6Kv5MmQy+6JT6OZzk9c3i/bEwEby2PtsLg\nowpZmhHD3aF/NoOgXj8nAtUxrgHCtXCLyDyci/Z40xXVHeQn3BsP94om2Ajl\nYlN5pTzGOxTXvRxvin/OnUpjpmIL3sLpscBsbtpYVH4pzazTBR53vOIy8RL6\nFURlcmGCM/2gOLE4oDOr8UA/6iScNfB2IEiFSuw9lZxf/UMNr80pgx6GxkXu\no5Bd2EDQb9aV1vBrk7gFeWyHOnN1RcMXHj0hV0jx2mSFZYaSmWeiVZ6V+mJY\nsOps\r\n=6sSs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKn3oVtp/JBwidaVOsMAbsNXgamZAP1C7FqKBIDGvr9QIgKaRj+oFbcffw0aHsr2DgPLxIe7GfCRZszcpWyXP8xvo="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.3_1601326788552_0.8696281830388111"},"_hasShrinkwrap":false},"10.5.4":{"name":"preact","amdName":"preact","version":"10.5.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"042be5e3ebc4c0e58d1d9e3e7a02d4c593573900","_id":"preact@10.5.4","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-u0LnVtL9WWF61RLzIbEsVFOdsahoTQkQqeRwyf4eWuLMFrxTH/C47tqcnizbUH54E4KG8UzuuZaMc9KarHmpqQ==","shasum":"1e4d148f949fa54656df6c9bc9218bd4e12016e3","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.4.tgz","fileCount":113,"unpackedSize":873783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe0feCRA9TVsSAnZWagAAgrgP/iilXojn2acFtnj3TiFF\ntOU+jLYMMi38vy7fDD5fFN+oMetQ+dsb2nc5g+D+fcanoRzJebwzHpCG0ilo\nVPdEtSYsdETTjFAxUja/Vg1sLds3za2UfGEwPWB4Q21hLDzyc0V02YIk6LFD\nStdps4hUHFrSQsEQhT6UyGWOvW/dJ0Xi3XS3NeBxr3QcNAfOsah21oSvkIXl\nytODujoj7l5/ItUrEzIxyxfl8PfYN/RFBtGhuIMi07JDfORCtfogjQfI2Ku/\nGpcElhIbR2XV2eHg8//L03Gi00lZ63C2yjd20V+x7Od6nxgtaqKmU8T5mvZ9\nzzXfKzFQzdkm+IOUNfhlu9GyiLCc/4mIrpORHECk0jOvWmmjtlfNRvoHTzh2\n1qNB44Sepc2uT1cvHvW4EFcHQhkLsEb40SA2OkkBTZFoqUe7TpWlqJkFDiwm\n2lDexAtIZ1poI2Fq6Iq4CMXNgLgFKjip+qR3f/e3JoUSHAXMJrSufCqz+BGr\nr7z81S+AvVgGpFXveNasf3JFkIzA2fO4G3j0B6hDmjT/2al+gsyndT/96Y22\nUdisqesiPbJ0oiPNcVcBHr028duFLSKNnPjkx1oLyQLFhu81G9HputKOVM9M\njfT6HmeBtvmW9EfcIgHWf9I49WlPFaXsTYTRnHTyjtn8ApiuOnmQ6L6juzH1\n0i6x\r\n=Lmqb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAnlfBsHFciZM6ZtDPhTXTqIRNrKLXEvkUXIQuNUDFshAiAii1mS5F9cHHe5f4wAttDZ6b5fgEa+AU5HRfZ+cExOCA=="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.4_1601914846233_0.27358906146181217"},"_hasShrinkwrap":false},"10.5.5":{"name":"preact","amdName":"preact","version":"10.5.5","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^5.2.0","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"94434066e99c3d7d4b9a0f10e51cf7530c3a3abc","_id":"preact@10.5.5","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5ONLNH1SXMzzbQoExZX4TELemNt+TEDb622xXFNfZngjjM9qtrzseJt+EfiUu4TZ6EJ95X5sE1ES4yqHFSIdhg==","shasum":"c6c172ca751df27483350b8ab622abc12956e997","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.5.tgz","fileCount":113,"unpackedSize":875384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjBfuCRA9TVsSAnZWagAAchoP/i1S1Pms+KBmwsaKOk1k\nf4n88xEoGdGLkxVJ+nHrvRh+HpZwoNXu22BMNyJhYv3CVdVM/8PqXZD8kLy9\nkvFWglfm5sFKN+STgCspmikfaJoF+nqs5ypt15BSViptkaSsJNp4kr7P7mwZ\nQWucJPmBo6xNAAa9VpUM7NDik6xnssSNGi2FWcCQMKiWYCwwJUxhm2ZyejHj\nCVXU2ti0uBfJLhiYld2Qr8hixUEufDEapjxv10nPqbqotIsxHQgNNEJDxB+e\n4zVGsJZdu/zNE0cgoLq3q1Ol9AG57+u0r5B0ftINV9qqizxht85uPxEAq2MX\nr8QUEBc5DAKgj9y42kQsd2nrAvdpWy0y5xLXfascWwCsnCw7cT9EN/JZrMVy\n6q+WvT88gqlxV08WZk0yN46FNepIioAH2gh5MmvgWgg0c1k/Q1vQgjbUxnEU\nHSGPuEUTUFrMTeUJ3tpsicGW6kibS8wqbgvjbblHDYEdNG2ncM8Mb0xXM644\nB+Ts2P4RSaOmPk2G0oB0iBOmZ1zQhBKNeIYeD4H6HyNr9HeCiGyb2Pn6V2DL\nmSGRUQ+i1j0ZRushk1ASxJdBy6crLQAfZYs6k8NGhd8M8GJyQE6TuAPY8jt8\nTFm7BB3WhAhSNwueIchpItNGBpPUg5bD5ixfDkbFseajJ3uO571xWQJ91Sne\n2ye3\r\n=Me0T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDX3p50NxRNe3BlwvsHz1TsR14W8S7e64YWEgCYXn8eiwIgATjU4968KTxxJcoZrVyaCQVb/bfDifIZFGFcrYb2nkg="}]},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.5_1603016685831_0.3878326094792588"},"_hasShrinkwrap":false},"10.5.6":{"name":"preact","amdName":"preact","version":"10.5.6","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/copy-csstype.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^5.2.0","csstype":"^2.6.6","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"b4d7a6c2c48360940640470d165f926d56a4b327","_id":"preact@10.5.6","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-woCWK2VXWqkfrf3KfWrDzsTx5j6CVbeABPuH7ycQkPWKDzuBBtgMp9UBMrqMmyi+TCf7CDXfmQVKOmPQW+YZsg==","shasum":"505fdc4ac0d9ca57caf1a7e175c284b75b972a2b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.6.tgz","fileCount":114,"unpackedSize":2465488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrYHnCRA9TVsSAnZWagAAuogP/0Zoyki3aH1tOkCuT21B\ninZZGxCQCDqHPSw72/rQ5kip8tdaJaXaIrb/o56pR/uzv+BVtLBoT6lwNJCY\nuKmTQkP8SckiG6+O6jFmFCQX4zrm6t2eP0HIGNGOi8rw2ZIXb1B1HUD3yYRX\n59ikBaNAgpCXTT2rJDzATnVDgJoJ7tYkh/wz8tXxSjZqwzJH/BIseS1m/6/B\n4ArnY/Aq8JmMQ5xyFwL0ggyB3tYOzT8W10mGlTFh4g5Q0WFCoBhiexvpvQxO\nHptKn6DMmnWhIozuTgfr0k5DHd/GNq+oVXmE8Bh/Uc+VlGa2M7A1zERJvKwb\n7q6n3NLFhODYZwyKGV7rBV7WAks8XwXOjMZxUgQKM4G2ytdKpj4Tq9GVegKd\n+P/Gt1XMeFtP4Mtee46QpLhqD5TcwEg1WX2BnZG2dFon2d0JVaIfO1c12t9+\n6FEKCWYFjteTEsn+Kc6q6pF9+QgvjjN7aDA9xrjM3ZPeLdQ07MKifYoNU0eX\naqGBeGY9dQegzD/7QXdJMTC5tNVLUXyuP9iUcQvOS/k5EW5jNQyIWdqzpJvt\n7R60/6do1uuhRZKV1XB7xN5vzezE24hoQOwMVu0K3rSS5IzP+r3LChPanGFp\n0KPyUgT++dMqsFSYU9x4oyJul9kUHl9Kp2i0kJLz4eaSqzPaFUzXIAslBHy7\n2GGD\r\n=J9OO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEgxC1zM8TqAglarmHnPy2CvB8WReGKhF+QfN8BiTFxQAiEAyT0pcWWGtPEG9C/4D7FY0GrOlcmC+s0knS+e2XosX+M="}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.6_1605206502353_0.8050785916621923"},"_hasShrinkwrap":false},"10.5.7":{"name":"preact","amdName":"preact","version":"10.5.7","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/copy-csstype.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write","git add"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^10.5.2","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.0.3","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^5.2.0","csstype":"^2.6.6","diff":"^3.5.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^3.0.9","karma":"^3.0.0","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^2.2.0","karma-coverage":"^2.0.1","karma-mocha":"^1.3.0","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^9.4.2","lodash":"^4.17.10","microbundle":"^0.11.0","mocha":"^5.2.0","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^6.1.3","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.3.0"},"gitHead":"cdb709e7735a1d1761fc108598119971dd5373a0","_id":"preact@10.5.7","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4oEpz75t/0UNcwmcsjk+BIcDdk68oao+7kxcpc1hQPNs2Oo3ZL9xFz8UBf350mxk/VEdD41L5b4l2dE3Ug3RYg==","shasum":"f1d84725539e18f7ccbea937cf3db5895661dbd3","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.7.tgz","fileCount":116,"unpackedSize":2465627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrbA6CRA9TVsSAnZWagAA4roP/3FjFhIIStXugGACv6zU\na8Oz+XdMhfWQqlrqkykRuWhGA7WZJgxIGKJDxRpZKTR2zXqw23OH5V9dZscN\nk1jmf7h7pOWUTPZBoOq4If/t1sL18AJzPOjHTM5qLdtZnBdfZCC5tUrsi1x9\nANOnRX2y9w0xOrAk+W0x2KWMi/u1ok0QxIsDKZA+Nl+VEZ8pjKrSxptnTJYK\nPzg5WaDBIfP9DANE/SKKZGy5nS8ijMOzty5Cs3kX9F5GuUpYunwSos7Nyyqn\n4LenYFTxcXqQnRdzx8h0j7rVwTRcaoUfbe4+TMc3qm6jpgvtaywS8Yua6Sj9\nN0/cgr9DRn3mRoLAMth8nRVAoQnPeLz5d5P+sSP5bl75fqixgNPRmI7CulSf\ne4SVMtIO/jxuGSeVQVdDleXjVekXCX+pPHPa1Y4qxY6grd0DA2jkqFq1L1qt\n3JJiHj2r1Abdf2V1on979WvOM2eW1Oxmb5xH3oolsF5PNisCO1XduvYbDLk3\noVuxqVZv9J36vATqxWNtPK1BsXI9DO7Cv2uDs/JhYIs4Hzk3EII/pTlN89QN\nQrMHBggnVT6TxaIioOJJ8unUaLgUWMa85fh9YrLez0ZmHnYIgvrSdkolwzRH\nkPyOTLmV7htvUIeqEkSnavaYTbzW1n1KsSC1d/pYLf9SXPlRQGX1sJZcsGTt\nL7t3\r\n=0J8G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwi55QUH496M3UowXIk11C/YjGqs+izq0QXoDUXOV1RgIhAM+uFNUHOm1ptyywVFYtnQfBTfg0AN0OXpdQSNRoi1oz"}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.7_1605218362033_0.6430954130534434"},"_hasShrinkwrap":false},"10.5.8":{"name":"preact","amdName":"preact","version":"10.5.8","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"default":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true karma start karma.conf.js --single-run","test:karma:watch":"karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.5","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.1","sinon-chai":"^3.0.0","typescript":"3.5.3","webpack":"^4.44.2"},"gitHead":"a9f7e676dc03b5008b8483e0937fc27c1af8287f","_id":"preact@10.5.8","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8d0FfBX3O0ay34i15mTckXicSsvaQLemPUByXTyfQUxDeFqZhbtnftVZMNqX3zEJLHcy1bqRu9t+V4GqJtG1TQ==","shasum":"96e71e2caadf60b5ff901f0e4772a46ba0756336","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.8.tgz","fileCount":130,"unpackedSize":1908207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7Jp1CRA9TVsSAnZWagAAtvgP/3pABgemDoA45pkJsQIZ\nPasag6FHT714cFu4XYstOXSnmzU/UuD9jvM1dXubdDuxfM2/BEKRq3fiXMWf\ntb0Xmk9pkLDYoDtN6lxFPdQWmNcjs7EZ4uySBcsV3aLig7LqfOylLc7LI6mI\nuAnBpWXNachdPBuJlSIRWFAVRUOkeNOiD2mB0ejkRRiuesZwlmSPvJXErXDq\nAQvPwbkrIUDDgJ1DZBxzOj6w2xVSeSqId1alWs2iW0YlKfmGC3unUO3tF3QY\no6IrXkc3hLEAk2EFz6OnX7MmlEsW1P5zi/1sEjdzvnT3TiU/Fryj8Ag6EJHP\nAkhhX3gv1w/PTKLm+R/mvPpvPeABZGzItTshAhG3ASA0Aiu3gyaAtb3M95yt\nPFxSPMS6ecx49qN/kyBYmmDdq6JhVj4t9J4FNKy7ItcmhAEoGRTze2Sw3NGn\npbKfNiJv4HrtIIAvW/HrQr72ZfZPeRb4uEFWO3F6AxLh7bU9O1M912rADENa\nN8vCayJtlMRfot92TU+N+XYdG+RtcEP1Z5lIoKHIENZMPt7533qp34r2hWdf\nn+DZHH147+TkyKfz1316EM0MSXE5dk3ElwiH9j5U68pnP2S9t+xpYPDCpZ4j\n6SKjGISOBbQAIdqoH4IX/cLq59cKhndxdDXpH8LpCbWBDk5cA4Oz1/wzcdxE\nKp7s\r\n=nk8p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGst/vkCDzAI8GxZeDLsxBGfPyUgR7lkeiemgZMlVWJ3AiAs0MUZySfkf4M5eq8/80E9DlLVME7OHe7YnQzpC1h9sg=="}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.8_1609341556604_0.632483455073418"},"_hasShrinkwrap":false},"10.5.9":{"name":"preact","amdName":"preact","version":"10.5.9","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"default":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-loader":"^8.0.6","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.0.0","esbuild":"^0.8.29","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^1.0.3","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.9","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.1","sinon-chai":"^3.0.0","typescript":"3.5.3"},"gitHead":"aba653e411fc88bc49c0ca2a6639c3edc268dd92","_id":"preact@10.5.9","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-X4m+4VMVINl/JFQKALOCwa3p8vhMAhBvle0hJ/W44w/WWfNb2TA7RNicDV3K2dNVs57f61GviEnVLiwN+fxiIg==","shasum":"8caba9288b4db1d593be2317467f8735e43cda0b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.9.tgz","fileCount":130,"unpackedSize":1912230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8bmXCRA9TVsSAnZWagAAkTUP/icdXgKcF4kpE++iJ7HB\n06hCUYQzrlFvdp6WuyQb7m4/vMRFM8ghIlwbjGuIXlH2SE8+Q0fkrbMnCIcV\ns6c1+SEQJIyxWPsMLQOeqrpBrd+94hRXT+TQO0sB1U5+cYNuy3o0tFmsIJkl\n2H+5CIDY7KsJU0NQVee0SqMTSUrg2gQslwRt0NiBzj4AWhOv4U/2ivy/GV6y\nWYn9bIPt+IWoHjQNrdQZnc92+jdKCeARvV22m/e2rWG0/S98IwGqe5IEhDHR\nFaUX20yK8ge8Qajal+MbJdwdJJZ550g8SkR/igfDKP0xOKRjUqmrbPXSlmoZ\nvlW5zi4VTgO2w3qL4TSCHbXWjTKpp94iIvG8g+hyNoqm7StshC7S5iEgKXdI\nNOOyg4+8OYQmi6lx3WbSR+qLlEJXWZDra+iRVs7AnUzISQAS2if5i1khRbhi\nsDuiULxrpnvhB4ZUn5+yGHdMJGC+draKL3iq2AEKJjxzJpSQwxIxgudk4RDO\ne12u6tclCyNuiBW9k4s3Eg3HvmD9ytYV0paiFygbdJlupwrI6IDcSRs1Xm/0\n1wta2+Dlf0d373TYUjv3XxvEh03CpWQBjf+cQnHqRMCfSVYM/yCW0u5e1EBk\nhqWEd8VA+Zdn+FkRuvcDQ18ggpEx9ubyxjJ1q0cBL2YAuLBiSc1Q1St+7sm2\nLrWo\r\n=ETF2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0vljy9nuORDOVAAr/Lt/cwq8DT6ah34kg7V0yoz+OZAIgTvHa/vFbOpXCNB6aKy3iKFEVUYnTDr6qpXjg9JdS3FQ="}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.9_1609677206628_0.024770111071861667"},"_hasShrinkwrap":false},"10.5.10":{"name":"preact","amdName":"preact","version":"10.5.10","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"default":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.0.0","esbuild":"^0.8.29","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^1.0.7","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"3.5.3"},"gitHead":"efee8cfbdf8dfcaa04e41f6c69e5846d59b904a3","_id":"preact@10.5.10","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-A6SITnHaj5CS4JPLVroQDNOEozq4Y0B4yQSGHLznxHe66Jb2DvoeTEibLjXmfeofgQE3BZ2zurltBIapzCMlwg==","shasum":"8de7bf669e965a51fc9e45a6fd1e97a47af383e6","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.10.tgz","fileCount":117,"unpackedSize":2490628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgADY0CRA9TVsSAnZWagAA0YwP/R8XyyZzRBi1OgwkXaoh\naWF2c9daeu6vFEf8SeNluDU8Hp/nLZtf618EfWYGFfSL9RGAd/wdZa8vUNUQ\nHTE+0MUyZ7KHYmUoXer4u55ELCkCACD9puYkOtRkMT7knCh8qDKzkgfQac8j\nuBzoQ5U6bXV5Qzbyz1p9QgBh8vaYLMuzQr8I+e1a9oYKX39ZkWmurd61y2cf\nTjrcrJuCBrkMTEtDJJWI/r14IU7Ad6ZmJOEhKLLGdW9LcOOzK467CPgCoalV\nLVisXNSj5WGfrvEqH/zFWnWQPn0crFjY1uBbdvIHXGjAO1tkjLYWgFXhp1fX\nwunOIq1i1X52Hax+lWUhkdnufo/ZP0AGK7TxsIJv5a6GUoh67EsACZkjBO7O\nSevETb/Ps64GtmVQheOGp5oU7vZiK/jc+JykxgO5HX+l7qDsiN8kz2xvPFuG\noWgNcSnfqEZTTRZEX8HaMoD6vuVuAuTQK8RR3M3g75AtCI67cALjOOR8rglW\npZGVGIK1U0vW7+njLSt0dmvPSWaY2xRi1az0EG79NS2Fc41CJuPxGSjk+5OE\nScVQD4wxWV39bCwka0cOvL0Qj+K1h9+XhRxJZ13I1FuUUfz1sGZK7tEZlUec\ngalh3v92Pqq7uNYoBle8rkAqGd04BblIYGGdoL6rT7sh3SsxThiIv44hFpwt\n00cV\r\n=BeVs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN9d1fyPh5XCr5INOr9GYB7dFiLoyDlbqSCMLJvfdMHgIhAN7AGIyvffGSMhA5gAZYxFKPMbm5WC9eJ/VDbT/w8o+b"}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.10_1610626611467_0.12504789123069138"},"_hasShrinkwrap":false},"10.5.11":{"name":"preact","amdName":"preact","version":"10.5.11","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"default":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.0.0","esbuild":"^0.8.32","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^1.1.1","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"3.5.3"},"gitHead":"398092e3207c2e17e38987162af24af848128fb2","_id":"preact@10.5.11","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BdtFePVilR1430kDuzh3VkkZktCmp8RTqHOjG8qesyGZXHNYJjdrjEBuc2f7O/vthhVENxJd0/aTjWtYeH46aw==","shasum":"2c8a431f16613e442901068175771806cf1cc0f6","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.11.tgz","fileCount":120,"unpackedSize":2482302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCKR3CRA9TVsSAnZWagAAnPUP/iDigFRxtXh1/wVcfn6W\nSsl5cERdZhQYM9FiOvsceEYud2DNf9qePVUXuCDrgZqID+Ypr/H9Bhz2SFwP\n0RmuBUDyt6hWKIMtNW6TNlLAlY/bI4aGNYfxlpfwlnb2iZr73nIG0iTatXXs\nwx7MTksSQItF6tPXK4VLCcHF2BZLv5tupFuOPZhV2Jqr5R5DkB+0Q3PuWhYZ\n26z7Zk0Fu3BsUKy9HAAUq0Q9M0v8m1U6eq3BzS0EVXoF5dOGH+LpnhWQiOWv\nYXvptJOkpV0Ike4FqalpRu6NwXfkYk73bsRg/WsXXHGVc1w9Bhv9e9/6NByJ\nNKf+Y5OkEtWM670vSlBtGR2w3u69S5YAYE3vz2wgDX6JTIRed0t61aQKJ2eI\nZ4ARsEyR+iiUHM/6d/lbVonC8Bh709sfKrRIrRchm0w7f8TOyb4AqFxAPqDs\nflTyBL/D8H3gp2CSqS3AcVdF75e94aCmqsA7mo69dilGrDV1UoOjwnnKjz9d\n+q1DMoTRGAJ4ZW6J9mqYojzmQvwTL6IyELHBDlG/1jGC3PwPgfNs6+mUQmbz\nYox6e82yOPyWFuTR3YKRCDapMuzylTzA6PmkBWII/KsipxfFeaNzY0zjyAAh\nhdhVej/ZEU3uuo9iF4BCfDyzZsBvfkCd97GNcWINUPE2kj2cCnl/4kqj0C4B\nCbRL\r\n=EnHH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+qU/iLSzVwujqCHDObvWN47b0dv3NjaEZRfa8NDAAnAIhAOqBEWrY8+BHbqpdPsgXReuKmOVignIjBEHdyVlXXio4"}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.11_1611179127144_0.18617424491155554"},"_hasShrinkwrap":false},"10.5.12":{"name":"preact","amdName":"preact","version":"10.5.12","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"default":"./compat/server.js"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.0.0","esbuild":"^0.8.32","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^1.1.1","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"3.5.3"},"gitHead":"c71a02fd1764539e5cf588e6b04ebeb09da92d5d","_id":"preact@10.5.12","_nodeVersion":"14.13.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r6siDkuD36oszwlCkcqDJCAKBQxGoeEGytw2DGMD5A/GGdu5Tymw+N2OBXwvOLxg6d1FeY8MgMV3cc5aVQo4Cg==","shasum":"6a8ee8bf40a695c505df9abebacd924e4dd37704","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.12.tgz","fileCount":121,"unpackedSize":2485567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEJC7CRA9TVsSAnZWagAAwFgP/R+3naCavGzW+cn6vA/m\njSF/2EJCzIWgNmvS8ljg21D180sXL/P2p7XZFLGyy679/E9Q3eLDebt9nCQw\nxiMz8MhmmwjeceAA1SC7Nd7kII0o9Zq6o/VJIyzMUH2vO0lq2wtyaW7tk8U8\nDjMYhwFJcBtgYH9PslZBMrZpTh5VoUE7L6/Q0qTCGgdvu9wLRBSVrgRrOahW\nWkoAeUIeduUcH7fXANafaMtzDM+4uErrw3+Yj8/0r4S0671aJYNPP8hra+zA\nl6ilnSj8ifOzL+mWjy0vmBpn1rh1LyMqonzsyOKQbaZ93UhGM0yMSZtOEyQC\nbJSij/f55mOghAL5OQ0DqVnN5+H3InYKIdpUnrYwHA1Uf5lUYrGxfCZ1WtO3\nwog3xBw4lVdaQ2/A92TlmoT7P4VehuYHGJQMX/biBV4Kv+8cotRh9s7GtDKs\nZssAU/36ciwMnTrc08jYxybiLWo2++oUE/04FuM1O72s8NP4LkXgp3SYOKSW\nHMWYaCtQNfGWUArzvbY3pBbLvfcT6/jpXCALKZZIilbKpCWrWYdaANqrMdZt\nvh8gMGjhqxrU82ahFf8gaHVQtCRVM56i6AtfbP8ublqdNfzWEtrWvWMBObMR\na5/HXo8M9+BnVak2DrF31YiQ590R7IQpX4w7wtu3MItwmiuBwHrfVlGP+iB5\n/w/G\r\n=Fe16\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCZk4SWySc6h2s+s8j1NJtP+rIMyn5JbvwSsmjPtXJ/QIhAOMOsBhl0rUphvu/iOGZGRvaJZU7CxiUiRuYrYdUnbSn"}]},"_npmUser":{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"marvin@marvinhagemeister.de"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.12_1611698362830_0.9839040554324396"},"_hasShrinkwrap":false},"10.5.13":{"name":"preact","amdName":"preact","version":"10.5.13","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.8.47","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^1.1.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"3.5.3"},"gitHead":"e523a82cda1d982b6fa82d23cc7539f5f5b4701d","_id":"preact@10.5.13","_nodeVersion":"15.10.0","_npmVersion":"7.6.1","dist":{"integrity":"sha512-q/vlKIGNwzTLu+jCcvywgGrt+H/1P/oIRSD6mV4ln3hmlC+Aa34C7yfPI4+5bzW8pONyVXYS7SvXosy2dKKtWQ==","shasum":"85f6c9197ecd736ce8e3bec044d08fd1330fa019","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.13.tgz","fileCount":116,"unpackedSize":899381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTn1oCRA9TVsSAnZWagAAuF4P/2bjIr2IuZN3abi69DuJ\nJifKjiqqdrFIJQrYO+WcPuqvPbd4P5x7Sy4Ab5TBVCAlVsGeJvQ+5LoYykuh\nyfTphH8FsYk1uWcACshr2WwNFUzrDKXr0k+wSZqriW/mFozadUDSTKXm/xdY\n4hhFBOYy0lP81ts+xdoCozVXse29WZI06QC+kzPTAnIAtj875lKtWYyGkUpf\ned3EkZseEn7H8EasNf6g8X0hBK1bsKoVTXs+uIs5JPG7ksETQ1wq+1ITJUe8\n0aw0f3GI/4RDMlOd6KfFI9MTwFcDwQCFbq8WmhkG50tAKI+SooOVQXnBX9mo\n7M98FhnTj//neSlpVeQK2xJrs8Pi/tts0khXCYyupxWSkuUB94t1/gbPcOLZ\nrxaF8ROD9imwiby0k1q905djcRLWk5bIp78sfEXwnS1aC39Wl0U8c2FhTWwb\n1Y+WptKz2TXhjrH1yFEgN+aQi2h5snaObh2rBP4Nf6NOmBjr9wUffwxuTL3e\nvDt2CJ8z/aO2dMDPN5oezxgIHNUf/uYhTDv15cI5ZhCbEP8z8LwnPrJ+SmpO\nZRtdxXoKPDVnlr3GykJ9kwsPPKuHpTsBi0gajQSwpPRNbWHoL95rcTiWyRwy\nbXfRxQ4CDIr+v/Azqbka/uFQyuTgYGjJy8sEtlCXimliqSL4aF/FMO4P5+Nd\nTi/l\r\n=wJNA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGUyPFZf20yrKmxofav1y8O9+owwvkOcn0VF9H0uYEm3AiAbP1rgv79lCHsl8bTFk9sYW6GJQ9Yy5gZCsYHCFVJt6Q=="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.13_1615756647749_0.7793143707795862"},"_hasShrinkwrap":false},"10.5.14":{"name":"preact","amdName":"preact","version":"10.5.14","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.8.47","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"3.5.3"},"gitHead":"ba8353cf3a105e45958168525c496902ab8524b6","_id":"preact@10.5.14","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==","shasum":"0b14a2eefba3c10a57116b90d1a65f5f00cd2701","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.14.tgz","fileCount":140,"unpackedSize":1172054,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3fOeCRA9TVsSAnZWagAADgcP+QCKv9FNYvyV6Pke59L/\n2Iwl8NaRlJhrzkjHFkZ0J49qNji9M6KJ1X2zheuoFIRqGJrighaORWq9altH\nEhNlaYeVNmhi0ofUjf7OCPX1cJSL6CvsMD6lgv6M4c66WpVlMlZD0PeCiBaY\nO1+QQt+SeX9aaQrrDy2qfgdIbzqmoCqEr4cUKwBeREAROdLDeBaVzY13cKmi\nsiE13tUEC6pC12DI/LxyF0zSjHP1V+6nY+TvzuoZ5pXPB5DfvHbMwn0jXi76\nnzlAOrx7Fkaq07Or3YMI3l1wKM/Z15QSYPIP/5PY1iJUyDQdYMcDf5t7a0Vo\nU+v3kxihGo4Xstd8l/Zgm2/XFQEcz64kkOBWmG4pIztKDu+W7Ey5h4Y6cJ7f\nJXUNm1N4RFXvngXX22CI+K2vCtgP6inriUisVJDmE14R6HH75a4kW5Deg2Fo\np+Px4H5Iwq4ht7rzSdljHuqJnTZJWeMh5kWNWGI6yrCnwNiJM8hc5pl/WBK3\nnco5y7g2v3DKpKN9DTKbWGCP9VZRdFVAoKNIQLLtNdKM3oDQ+BkveQNm9tc/\n/7xYvUxTfMQGVaZlulYi5GGEK5dHO/INbY004P8VMD4C/uOjuJCSOeX+OJGH\nHcKQVGnX1tT/aIA7goyxilGcAf50/X1/TGFKjdOdfKf3Xl2F8ss9RxqVwMX2\nk16V\r\n=9cXi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA9Kr9uL5zceNiX7Qpa+XafQ84+DDz5JQrcCwXbUUi7dAiEAwF9xiMj9PqfaihqtHeK0TOmVcabLeAvLBkdzYOD+y/Q="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.14_1625158557659_0.6782019845936562"},"_hasShrinkwrap":false},"10.5.15":{"name":"preact","amdName":"preact","version":"10.5.15","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./":"./"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.0.1","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2"},"gitHead":"bd52611cade159a643b617794410f40a9d52eda3","_id":"preact@10.5.15","_nodeVersion":"14.16.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-5chK29n6QcJc3m1lVrKQSQ+V7K1Gb8HeQY6FViQ5AxCAEGu3DaHffWNDkC9+miZgsLvbvU9rxbV1qinGHMHzqA==","shasum":"6df94d8afecf3f9e10a742fd8c362ddab464225f","tarball":"http://localhost:4545/npm/registry/preact/preact-10.5.15.tgz","fileCount":137,"unpackedSize":1263778,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBxdJJYYSsqQ/p7fV1REtyLNpu5YuPUk5WnDw0rTXnXAiBgXZf7Rd9ZVBBsGZDpfPCmWljbPlhyTjetEB4dIlzIMg=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.5.15_1634018089411_0.3814915289515528"},"_hasShrinkwrap":false},"10.6.0":{"name":"preact","amdName":"preact","version":"10.6.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2"},"gitHead":"3a32895800437b9383def7e2a994ba2a59bd4871","_id":"preact@10.6.0","_nodeVersion":"14.16.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-5gpdQkPsfl8ycSQSLSZxSvkifZ9FM4Zqc1OSToSpgygvgmXjcj6Q5jNRt86ote8dn0RkdOaKv9UAZTU7a6wP+g==","shasum":"803e59c8670fb56f26e0a2a262fbaeafbfaa944e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.0.tgz","fileCount":137,"unpackedSize":1264568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnRF+CRA9TVsSAnZWagAADIMQAJFTXIVBsT1tDAOr8K9M\nbM350RCYm8wvHax39YepAXoBYmivof0XjAEDqQGp9IoR33h1AlshMjFZNqx4\nkaysSAY1gdGW7l0H1miHal1nvb3oFVaOU8d21e/r+hHFXdV+VE2O0G8lRpwi\nJdlyco0qW7K1vK60TpH1hTQKbBA2P9yd5Q45wHE96P7ixWEl0FjfhUcu35Kp\nUla7W7lSGjXMnNhwXT6ghYerhjXW08xZx3JTRyDSglLPRtmg/6ZziYmn4oz6\nsqMYEvWYrhZhcVIX3kZk9FWvnSuBVgsSFViHqPkCpS5VG8zjOLA2UkB7v9hp\nYZAnpUbz79a+zXn3DjJRVw7I4BoFZFgEUhMex54DivVmDoU9CO4TmuafVK6+\nWPHCmUmh1b4Rlx65vJz6ziMDkCRWcyOH8TDZL6Yxlf3ERz4sYqu28Bjv1WWT\nY3TZnZm3yvDr9TWDYKty279MpADi5CVWyiKeI0HeH7FEk5E/fZBJRg7zd/VJ\nVvYT41obmagCyx1ZZkVj7DwZME08c0t0uyvUZA6lkBGjp3tohqP5RsXsf/9N\nL3Gp+m0yWaxv4e4/VgA0Kyp58/DFlyN0OFwclYkx199I+oVGCkaIU4Uyt/sM\nkJykRJAcN3avX/YOGJk3itIVE8ui5F27nuv9ZIxxeT45QI6Be6rf4ngtnkaV\nbx3z\r\n=yl/H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDNNo39B7c1DKezbGzmG4Eh45Ll61L2SvrSD2lXF+UEFAiABMJnYtXBdXjNXThHsKMry8VLJmkJ7I70+Xs+W0MGl0g=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.0_1637683582069_0.2646978351308753"},"_hasShrinkwrap":false},"10.6.1":{"name":"preact","amdName":"preact","version":"10.6.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2"},"gitHead":"70c393d8d377c00d68249a0b3c6fcae09f36d51c","_id":"preact@10.6.1","_nodeVersion":"14.16.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-ydCg+ISIq70vqiThvNWStZWLRjR9U2awP/JAmGdWUKm9+Tyuy+MqVdAIyEByeIspAVtD4GWC/SJtxO8XD4knVA==","shasum":"e14de611b65aea5e656249d19582c457fb0aa255","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.1.tgz","fileCount":137,"unpackedSize":1264606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn2zkCRA9TVsSAnZWagAADd0QAKBnUmtCz5luG55Ce1g0\nwJSraXv4xiZYB9asc/YbxWquZMk4ha2oISFcF2snWSkksI6OZvMDBAXX+w0D\nd0Jonvi6tZbioj4wBBghSnZgl8aXht1rzmJLbJVfBqmVdcr93SvU12Df5AA8\nFOW1TFAhGTkxIWupIGlFWSA1wwu92fXuznwBlyX9e5ckYQnWiBOZV+K3dVu4\nk+SnO/OIvy3EgGR9flx2uhfK4oEoIEkSVpYazNn9E1kKpc7trX7qC/7OpqTJ\n2JhQprxGwnZrAQk4zku89yMFUt6c3ZK6TdLiWeTBB4+bkOYBZ0fEHPExHoYy\nnfvMedvBuBrAviKYuwktYPIIH9Rzcn1+PHQSx+jo6u1dM1AnWahTY1sheBgt\nJ1MGtVWN/C04DkzdQpn7ipSA0iSPxhUydvnO18Oo27lKw+SaBwKWDMjHPR/H\nSYXj9KBFfBWpMveOvuS+SgQWZSUVTs9jHw8QSS6dfsQ7CbIQLhlKCg8JYTg/\nhd7gCUluArGHCix8rYB2vOeRT/tnttKw6jjk80w4cm4Q2WCIn1wD4/3AIUtS\nQ/FGx8rZP4SkVDD72CXUJVcqmgP6pQkfDtxiha3hlHlsdpi9DQIlA47tSXfl\nqvqyonqekhh6J9g+EtiF9hT87HJDQyr6p0qQBDBF+JEQYuiUHYXN7kRvgC4n\nhrXp\r\n=oyD7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwJsSaD9MARbOkdqU7uMUm8Hx992z/gaE5si7g9f7DKQIhAKHPVmu5lCO/5LJf60YWMvXRMjQFgEDViNcdNvRjYNSf"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.1_1637838052530_0.5437584219682035"},"_hasShrinkwrap":false},"10.6.2":{"name":"preact","amdName":"preact","version":"10.6.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2"},"gitHead":"dd1e281ddc6bf056aa6eaf5755b71112ef5011c5","_id":"preact@10.6.2","_nodeVersion":"14.16.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-ppDjurt75nSxyikpyali+uKwRl8CK9N6ntOPovGIEGQagjMLVzEgVqFEsUUyUrqyE9Ch90KE0jmFc9q2QcPLBA==","shasum":"c849f91df9ad36bfa64d1a5d5880977f767c69e5","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.2.tgz","fileCount":137,"unpackedSize":1266016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpPu3CRA9TVsSAnZWagAAWyUP/3SAXUmAHF9lPxJYFRBT\nAoi67nQdXPrixWae10u9KxWOTgPSJNO1VrDN6219FRNDzYsOj15jdpuKiyAg\nmzBO7uihc1b+DoHgK1d+8SP/hQlA0ltcNufAgkCU1lp8ehmNtrOdn5BSiSJs\nPa9xqROhl3airrDGWIhdYUuWaoZBNykfM0dQj+ALwVB8XrFMuA9qf3tRsTTu\n7N2K9RB+XdL3zS8cKdJ/5meVIUPSuJnqa8TDPNkbDP9MbBm6cusEg5c4xdEO\nQ9uQmXGgLj1mMcTmkbvse5zxwaG1PWtSVO35oaHXbnMnAgNrCBdoj08LQJF8\nk+foPnbFRboht/Fyy1S2FcTM5wg1J9YVUqmHGBJjfIngfsLulxmsmuY8F9yd\nSZbhRIf2JdgzL7wKwu31d+n3/94psE9ltXY3NJbgLWiiF/03zam5IeX32Rpy\nizH19GNIAH2o8IOe3EwUidusXAEQ48CMwwnfqaawPFv5TexaUeLMFLE/YCh4\n3lRnWMiKm8B4RBj8VllMzwFVD0LPrIZOa0xS+J6vBPwj6NJSOJaHfP+48Y5F\nRCJvwRSebPMWtGfsDaupBsfCYd5hplWKL2R+N1HCFO1HXB03CKtT9AUOPgqU\ng44WwL75aX+YDHVBkGAndpFoaFCLu3pQFS7ZKxhbkU45GMChdUFj0ss3uK2N\nnJDF\r\n=XEAf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhfeuoDqbeT9Bp0ZZMrleVYD2AzlONIh6Kqt4chvUrpAiEAh2qK2cGD/gOtxStHr6T4/N5BrlcV/xSeNK6wrT1yoo4="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.2_1638202294844_0.7980770391161736"},"_hasShrinkwrap":false},"10.6.3":{"name":"preact","amdName":"preact","version":"10.6.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2"},"gitHead":"0957073acfb5b634aa97c70b2534ab9fa989e2c8","_id":"preact@10.6.3","_nodeVersion":"14.16.0","_npmVersion":"8.0.0","dist":{"integrity":"sha512-vwuM6VmFffw5t3RrLFn49QHPzoepD9hiNdkLa3Mt4UGSRdfQfIHtC1xqxhjVGoq70Sjtxrn4c9xwAnaS6z3anA==","shasum":"5d2fd00c34114373ed2bfbeb4fcc9b14df78160d","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.3.tgz","fileCount":137,"unpackedSize":1247657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsK8BCRA9TVsSAnZWagAAlnYP/0Yd48W4jeUFlxZErk0n\nEL6/I068Ffe0G+ONTfTjzpTadvqqkurhvv7ewofmbHmsPayuGj1mlWOGZDnP\nA2rtTyC8yoiJdWmelXaNzLjrkrFhqWVBwiogsRKtAoLRxcOz2xMEfhJoMsXe\n2WVOxkZQ6dV63f9J1uoIcAHnTCG74UfqhChilyMxww+pDFxEXPAtdFoGuWVg\nSVxYcB8SnJGi+XrP80POhBYesnRXj7vlS/lp0oVwSQyMTwk5/366pCnrWO3G\ntEO1AFHjylmp9j2kRKbWnqEnQEOvNccUVI1zJ31cwoxTs7h+7FE7W0q8E7g+\nw8AaCZ1Vtou2qch2jvXAQ36fsH2LNnJ1q5BqNNunIExZD688mT1NiuiJVySw\n8hGpbjOCzGlWvP4cWiVY4zQQv0IDc1sqXFGC69yeLnpD6OqRPDD+CId47MHS\nvpbIGi5wYhIgDEq+N9mTgR0WH35ahsel7ruBW8yEOLbe5Qi5B+lwjloUmnwz\n1F8q0KrMFsLGUyL19mO9CiGmHD7tuYsvyrEN7JUmzV79Li3/MUGeUFEA7Vtx\nT0UP2iUfs9NTSI5Lyb+/cbM9WFmDaxgggsHQ77U/H+Vdd69qMlXI7Ned6SJJ\n0x2Ox/et/P69UM57c1+Kluic32Xw9W1vOP3iHUHCak/p9MqJa72r+ZGDEKW+\ncPGJ\r\n=4iPo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGNb9hPTlm56wMNfNvek8YkRB7rBiz+kMcWJgJ+l2tLAIgBW7ZJG7JLRqRwH+p64O84EKWJ1k7in8uRqYpeC03pP8="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.3_1638969089263_0.1758858977824027"},"_hasShrinkwrap":false},"10.6.4":{"name":"preact","amdName":"preact","version":"10.6.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2"},"gitHead":"ce35a25355fbaeac307b3ad3bd741024e4862311","_id":"preact@10.6.4","_nodeVersion":"14.16.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==","shasum":"ad12c409ff1b4316158486e0a7b8d43636f7ced8","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.4.tgz","fileCount":117,"unpackedSize":931386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsm3KCRA9TVsSAnZWagAAS2wP+gJmoUekmNg0ZMoGABsn\nwkeSDxslMvnfvyfMP/so8Bw2SQRvmjucJFks2Aleg2L/dGzLzq0rTyj9Z+SD\nmVtqhFnKc4Lnn75a4vrxumb91Emnzt3dWXSjveA+PJ4jfxMNBONxCeR0P9z4\nZcfLzYkLsov/f5c4vSVcKlvTne0aWVAtWixGyOQ3br72rXI4z6KbIVRrHS4O\noTHVNS/sKZagnME4DhvBvZTf4OXdHX4sEtGjjdtUIfXQWB7zQAUfBcKKIRE9\n03J5/IIREPpqKArmQ12WtkWj0Ht6f/ylszPhxA+2fyVtiQ4MjTFPYIA5y7Zj\nfed6BEnt8+TDK1I5cN9+pqZmPi8Zv+vgc5lrDIKOEXNQjKPLwlaU7UCFBo/a\nd3YCMVVSdlw6bHph15/beiumx1MBpWBd5mgEkWji8uhX0o5ZGBVrWNhpRvzE\nLlvIdRgEAoF+p2oWJ7N83NBTRNHDp4N1T31nocdFW18z05LAQaSdqzm2/ZL4\nPTl+IKML4OXQYk19cr5+VIdUKKRjO3NLH11kCh47q/ZHzFRpzELjxMeMW4qV\n7jbr1cw0XKFHX6cCGMQo3oLMChCkXqg3g/HnVQW5mlI3H7M/nnJOHJ/h9cNm\n5v9xO2k5TJTPWpS9iM+fHbSInMpcuYKC5RotVfZjtGtandhyJqMSKMWWXn9g\no3zF\r\n=odIu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHU5X+xmAx14Zaiaj8ORnD5RULqrBQ6+D0QANSsuftjNAiAAzlRlF7tWlrhjFIdJu7KG9dT+8dEDGy/X/TmVu1HiVQ=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.4_1639083465800_0.7683908720252586"},"_hasShrinkwrap":false},"10.6.5":{"name":"preact","amdName":"preact","version":"10.6.5","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"gitHead":"1b6fbc723020f66b74581e9eea067f74380eb1f9","_id":"preact@10.6.5","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-i+LXM6JiVjQXSt2jG2vZZFapGpCuk1fl8o6ii3G84MA3xgj686FKjs4JFDkmUVhtxyq21+4ay74zqPykz9hU6w==","shasum":"726d8bd12903a0d51cdd17e2e1b90cc539403e0c","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.5.tgz","fileCount":117,"unpackedSize":897445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8tE7CRA9TVsSAnZWagAAHZkP/2Vpd/OlvLdhBqeKbXQu\nlR2or3IHamGrlENIwhZttIn+4Fmq9SzkCi+crNRrqW7QIfXjRrywYbJ+Fq+C\nRLiWhw0YtwoFE2+5baNLYx7QeCvRFyD9RWrpznCCLrQxAkRwg6W9A00XZcp5\nM5uSzoES795Hpehnsmz9Az3gqS6luDXYA4aTYw+g/sJQDtw2MGwk5mGPYkgw\nuqjwBysF66RV1JHu3IgpxaQ+fHf8vXAZ5y1n7FGiNT4Y/cr5KnBEklCRImtw\niJG9tSvfi84HXK5EZ/GOpWscToBB8tLYTj/GNeY6rtHLMTh2mlsxjeIk6oJP\n30YqhyWwAmKVOBO41rLxEQpXRUdP2Y0n1uT2Sg8TxW886JFE5ZK8qZpwA4fU\nvypytfMEex66iiyKmRcR0PNpCMQjWdkSlmyau88x3VsWdOzbbc3Vv+gtF5zw\nbsceC/NJH/6tbRdD0JuGf0rPnDjyurui4sBoIiYa9uu20iZsubCuuO3oOQcH\n6xWfXLTc+bvRjfr1kxvBJC56skVsLEPlkYXVSjGrpBo+3SqIYteSEINbG0ip\nnxeyHksZy2Y7GLfV6o6YCnyvEPc1iOnS4kcb5/3RPhqrNW2ws42gUA+dPqjM\n7STl3lsddb3rTFjTmNN989Ka4puwG5pDZA+Q7Yp12u/Muzrfwe9xq9cpqUwP\nEQaT\r\n=xz0S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDl6iAMujoSophq35NRI+EVULKL3NYvD6eA3CYeL1QJTAIhANszujAartk6ApAbHqlZwNdmXLdiFewf32kFtKs/oGk3"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.5_1643303227519_0.6622686008164933"},"_hasShrinkwrap":false},"10.6.6":{"name":"preact","amdName":"preact","version":"10.6.6","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","require":"./compat/dist/compat.js","import":"./compat/dist/compat.mjs"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","require":"./debug/dist/debug.js","import":"./debug/dist/debug.mjs"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","require":"./devtools/dist/devtools.js","import":"./devtools/dist/devtools.mjs"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","require":"./hooks/dist/hooks.js","import":"./hooks/dist/hooks.mjs"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","require":"./test-utils/dist/testUtils.js","import":"./test-utils/dist/testUtils.mjs"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","require":"./jsx-runtime/dist/jsxRuntime.js","import":"./jsx-runtime/dist/jsxRuntime.mjs"},"./compat/server":{"require":"./compat/server.js","import":"./compat/server.mjs"},"./compat/jsx-runtime":{"require":"./compat/jsx-runtime.js","import":"./compat/jsx-runtime.mjs"},"./compat/jsx-dev-runtime":{"require":"./compat/jsx-dev-runtime.js","import":"./compat/jsx-dev-runtime.mjs"},"./compat/scheduler":{"require":"./compat/scheduler.js","import":"./compat/scheduler.mjs"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.2.0","coveralls":"^3.0.0","cross-env":"^7.0.2","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.0","esbuild":"^0.12.24","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.4","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.0.3","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.6.6","_integrity":"sha512-dgxpTFV2vs4vizwKohYKkk7g7rmp1wOOcfd4Tz3IB3Wi+ivZzsn/SpeKJhRENSE+n8sUfsAl4S3HiCVT923ABw==","_resolved":"/Users/m.hagemeister/dev/github/preact/preact-10.6.6.tgz","_from":"file:preact-10.6.6.tgz","_nodeVersion":"16.11.1","_npmVersion":"8.0.0","dist":{"integrity":"sha512-dgxpTFV2vs4vizwKohYKkk7g7rmp1wOOcfd4Tz3IB3Wi+ivZzsn/SpeKJhRENSE+n8sUfsAl4S3HiCVT923ABw==","shasum":"f1899bc8dab7c0788b858481532cb3b5d764a520","tarball":"http://localhost:4545/npm/registry/preact/preact-10.6.6.tgz","fileCount":122,"unpackedSize":904354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCkyfCRA9TVsSAnZWagAAFYIP/AgT0nk9VMWqIxMoK5rS\nttMDWQIDrwS7NLgcS3VZ9vhJxh7FHaM47s9GZSbvB3xN0dTb69MNld+TtEOm\n665avlWk98DtEwBGkP5Afg78WkDHiDD7tduXhFUj3+s6aU4pfMuom5ongM1y\nz75RC5aETXhGc9tSugFT/iCpTS7XfQzW/or7HhJ0bzLv7bR3iIsvoQf8tFHk\nDGrYUNyOvte7isYzAUtTJQ40cScm00Axo2+C3xoREG/7FbnY+kObTVP2gtco\niffI1aRFQ+219G2VsawKcp39K9Mz76gPtiCdnOkAUcKUoy1t0LiOC9TwfEeD\nDR1Z6JqO1ysKl8pRmxPDgV0/uckJaub8LhvQx+7Ihey1pHbOD94FHendS9dz\nBPadTdNecOObqJ+YUnCYTTyDJWWqRrmmAd2nc+nGp9v9Aq9cs7e1IXGcJ4a3\nwOA0jT3/kfoSrvYeWmMhDqM5e8YHj26cx3xm1Q9CfBvaf9GI44hiFcaJdsBc\nmtpW4lFSI8sv3cmOwmWjFUVl1iK+5WYI7OIUAcaaY0gkMUpwH54uuBZmj57W\nNEIt4PXZ89v3h6n6xRRRkz8UDc/tMGqwjt6d9LunrBYNAkaFHZSZ8ivysPIT\nnwbhksygkUcwAjrfqKQofjpJJVRW62opB4bYl9TuxADyTELJ7go7fUsse1/4\nMJrt\r\n=uL69\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrPj8XW/FOzLs0wuDQCdK0wpyPtIrj/GB5ZSt9IKoDGgIhANI0hzK56zyI9DAKgL9mbaDK62zyWyN6rmAjMjpQIZoS"}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.6.6_1644842142833_0.466643935085989"},"_hasShrinkwrap":false},"11.0.0-experimental.0":{"name":"preact","amdName":"preact","version":"11.0.0-experimental.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.mjs","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","browserslist":["Firefox>=60","chrome>=61","and_chr>=61","Safari>=10.1","iOS>=10.3","edge>=16","opera>=48","op_mob>=48","Samsung>=8.2","not dead"],"exports":{".":{"module":"./dist/preact.mjs","import":"./dist/preact.mjs","require":"./dist/preact.js","umd":"./dist/preact.umd.js"},"./compat":{"module":"./compat/dist/compat.mjs","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js","umd":"./compat/dist/compat.umd.js"},"./debug":{"module":"./debug/dist/debug.mjs","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js","umd":"./debug/dist/debug.umd.js"},"./devtools":{"module":"./devtools/dist/devtools.mjs","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js","umd":"./devtools/dist/devtools.umd.js"},"./hooks":{"module":"./hooks/dist/hooks.mjs","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js","umd":"./hooks/dist/hooks.umd.js"},"./test-utils":{"module":"./test-utils/dist/testUtils.mjs","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js","umd":"./test-utils/dist/testUtils.umd.js"},"./jsx-runtime":{"module":"./jsx-runtime/dist/jsxRuntime.mjs","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js"},"./jsx-dev-runtime":{"module":"./jsx-runtime/dist/jsxRuntime.mjs","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js"},"./compat/server":{"module":"./compat/server.mjs","import":"./compat/server.mjs","require":"./compat/server.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","_bundle":"microbundle build --raw -f modern,cjs,umd --no-generateTypes","build:core":"npm run -s _bundle","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js --no-generateTypes","build:debug":"npm run -s _bundle -- --cwd debug","build:devtools":"npm run -s _bundle -- --cwd devtools","build:hooks":"npm run -s _bundle -- --cwd hooks","build:test-utils":"npm run -s _bundle -- --cwd test-utils","build:compat":"npm run -s _bundle -- --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"npm run -s _bundle -- --cwd jsx-runtime","postbuild":"node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs --no-generateTypes","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks --no-generateTypes","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks' --no-generateTypes","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React|_[0-9]?$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@changesets/changelog-github":"^0.4.2","@changesets/cli":"^2.18.1","@types/chai":"^4.3.0","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.3.4","check-export-map":"^1.2.0","coveralls":"^3.1.1","cross-env":"^7.0.3","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.2","esbuild":"^0.11.21","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.5.1","lint-staged":"^10.5.2","lodash":"^4.17.21","microbundle":"^0.14.2","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.7.0","typescript":"3.5.3"},"readme":"

\r\n\r\n\t\r\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\r\n\r\n\r\n

\r\n

Fast 3kB alternative to React with the same modern API.

\r\n\r\n**All the power of Virtual DOM components, without the overhead:**\r\n\r\n- Familiar React API & patterns: ES6 Class, hooks, and Functional Components\r\n- Extensive React compatibility via a simple [preact/compat] alias\r\n- Everything you need: JSX, VDOM, [DevTools], HMR, SSR.\r\n- Highly optimized diff algorithm and seamless hydration from Server Side Rendering\r\n- Supports all modern browsers and IE11\r\n- Transparent asynchronous rendering with a pluggable scheduler\r\n- **Instant production-grade app setup with [Preact CLI](https://github.com/preactjs/preact-cli)**\r\n\r\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\r\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://chat.preactjs.com)\r\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\r\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\r\n\r\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\r\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip&label=gzip)](https://unpkg.com/preact/dist/preact.min.js)\r\n[![brotli size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=brotli&label=brotli)](https://unpkg.com/preact/dist/preact.min.js)\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\nYou can find some awesome libraries in the [awesome-preact list](https://github.com/preactjs/awesome-preact) :sunglasses:\r\n\r\n---\r\n\r\n## Getting Started\r\n\r\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\r\n\r\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible tooling for you, and even keeps things like Webpack and Babel up-to-date as they change. Best of all, it's easy to understand! Start a project or compile for production in a single command (`preact build`), with no configuration needed and best practices baked in! 🙌\r\n\r\n#### Tutorial: Building UI with Preact\r\n\r\nWith Preact, you create user interfaces by assembling trees of components and elements. Components are functions or classes that return a description of what their tree should output. These descriptions are typically written in [JSX](https://facebook.github.io/jsx/) (shown underneath), or [HTM](https://github.com/developit/htm) which leverages standard JavaScript Tagged Templates. Both syntaxes can express trees of elements with \"props\" (similar to HTML attributes) and children.\r\n\r\nTo get started using Preact, first look at the render() function. This function accepts a tree description and creates the structure described. Next, it appends this structure to a parent DOM element provided as the second argument. Future calls to render() will reuse the existing tree and update it in-place in the DOM. Internally, render() will calculate the difference from previous outputted structures in an attempt to perform as few DOM operations as possible.\r\n\r\n```js\r\nimport { h, render } from 'preact';\r\n// Tells babel to use h for JSX. It's better to configure this globally.\r\n// See https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#usage\r\n// In tsconfig you can specify this with the jsxFactory\r\n/** @jsx h */\r\n\r\n// create our tree and append it to document.body:\r\nrender(

Hello

, document.body);\r\n\r\n// update the tree in-place:\r\nrender(

Hello World!

, document.body);\r\n// ^ this second invocation of render(...) will use a single DOM call to update the text of the

\r\n```\r\n\r\nHooray! render() has taken our structure and output a User Interface! This approach demonstrates a simple case, but would be difficult to use as an application grows in complexity. Each change would be forced to calculate the difference between the current and updated structure for the entire application. Components can help here – by dividing the User Interface into nested Components each can calculate their difference from their mounted point. Here's an example:\r\n\r\n```js\r\nimport { render, h } from 'preact';\r\nimport { useState } from 'preact/hooks';\r\n\r\n/** @jsx h */\r\n\r\nconst App = () => {\r\n\tconst [input, setInput] = useState('');\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t

Do you agree to the statement: \"Preact is awesome\"?

\r\n\t\t\t setInput(e.target.value)} />\r\n\t\t
\r\n\t)\r\n}\r\n\r\nrender(, document.body);\r\n```\r\n\r\n---\r\n\r\n## Backers\r\n\r\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Sponsors\r\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT\r\n\r\n\r\n\r\n[![Preact](https://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\r\n\r\n\r\n[preact/compat]: https://github.com/preactjs/preact/tree/master/compat\r\n[hyperscript]: https://github.com/dominictarr/hyperscript\r\n[DevTools]: https://github.com/preactjs/preact-devtools\r\n","readmeFilename":"README.md","gitHead":"9f6c95ad19464cce7b8dad37d4ebf64df3d62172","_id":"preact@11.0.0-experimental.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.4","dist":{"integrity":"sha512-TXVw49O11z34ouJOe9+wzN9/ReoXoNyO1Jth48SiJDuqLKrdAiuXkBlmtTWeDgiaJr1SSPDMBdLufMDjDkb5bg==","shasum":"67f9c6faf5cdf90a5b723516f0dbcb261c5abe33","tarball":"http://localhost:4545/npm/registry/preact/preact-11.0.0-experimental.0.tgz","fileCount":128,"unpackedSize":1308010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEiOxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo93BAAkZyk7Zmgep6OAkFvcdd4X7jIOOE5t6rDpZVSCaI+mCBdfVhw\r\nJUTRNVoCw8/6p8ICQvu8aRRT0ws3gepTQ9QT3ix89SfBOAOhoa1AKY2esquB\r\nmSp0lhDF+6pagSrGq1Jptx50p6nXaLXIXsliSJjd94GRYH1wSVIE1toVTa0k\r\n7Kc3pCEHHql+gHZWR6foNRpyUEOgtlvtmpBh0C9vA2b+snWISgmXhpEIWkj+\r\nj8gEVKFMgjss6hRb/hxfMhXrUd6s8K93RgebkP2GUFmCBwXYjTSMoyVEHAoN\r\nhZ6StRswSXJiM4XSx6TBfCsktW7JKnrOd9gzz1WuDTFDH8BlU5DEyx68SzsA\r\ny2b1ReRIsxbwoV8sdSvY2eRIRaam9XqGnwkj4/XT/jOt8yux14LFy2TM8Q9/\r\nK8P6l9faggJI1kfTbj/u6ZOh5ygf16Q9ZpXrKzTRbdckTDPktRp0TJ5uqW7x\r\nMcED7GXM3J8Itd8oqg8FYDWzSKco2c1U/9XNbYt7vnsXj7jR3exjdv0KRRRW\r\nJmXwD3dsQcCsdK/7LnyVkAf9/vmTOKayJcyowEGwswILb769hxXAA+lzphUX\r\nX+Uqla13JO4l8oOLK/XokyVP931LAXD7tKej4s6CxIKw4uOc2i4bxyz/SPLa\r\n4ybT3m3Hksgm+jVAqzFTflvRDhE4bf3gsUQ=\r\n=9EUQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRPCj1R5m6279T0ZctiH7J0D7ENP0TKFUY+/7CqQjj5AIhANGJaRJb9RPpBlNfMivXmkaB/RZUscfyeU7YtajLhnet"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_11.0.0-experimental.0_1645355952821_0.7518737343672752"},"_hasShrinkwrap":false},"11.0.0-experimental.1":{"name":"preact","amdName":"preact","version":"11.0.0-experimental.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.mjs","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","browserslist":["Firefox>=60","chrome>=61","and_chr>=61","Safari>=10.1","iOS>=10.3","edge>=16","opera>=48","op_mob>=48","Samsung>=8.2","not dead"],"exports":{".":{"module":"./dist/preact.mjs","import":"./dist/preact.mjs","require":"./dist/preact.js","umd":"./dist/preact.umd.js"},"./compat":{"module":"./compat/dist/compat.mjs","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js","umd":"./compat/dist/compat.umd.js"},"./debug":{"module":"./debug/dist/debug.mjs","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js","umd":"./debug/dist/debug.umd.js"},"./devtools":{"module":"./devtools/dist/devtools.mjs","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js","umd":"./devtools/dist/devtools.umd.js"},"./hooks":{"module":"./hooks/dist/hooks.mjs","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js","umd":"./hooks/dist/hooks.umd.js"},"./test-utils":{"module":"./test-utils/dist/testUtils.mjs","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js","umd":"./test-utils/dist/testUtils.umd.js"},"./jsx-runtime":{"module":"./jsx-runtime/dist/jsxRuntime.mjs","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js"},"./jsx-dev-runtime":{"module":"./jsx-runtime/dist/jsxRuntime.mjs","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js"},"./compat/server":{"module":"./compat/server.mjs","import":"./compat/server.mjs","require":"./compat/server.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","_bundle":"microbundle build --raw -f modern,cjs,umd --no-generateTypes","build:core":"npm run -s _bundle","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js --no-generateTypes","build:debug":"npm run -s _bundle -- --cwd debug","build:devtools":"npm run -s _bundle -- --cwd devtools","build:hooks":"npm run -s _bundle -- --cwd hooks","build:test-utils":"npm run -s _bundle -- --cwd test-utils","build:compat":"npm run -s _bundle -- --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"npm run -s _bundle -- --cwd jsx-runtime","postbuild":"node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs --no-generateTypes","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks --no-generateTypes","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks' --no-generateTypes","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React|_[0-9]?$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@changesets/changelog-github":"^0.4.2","@changesets/cli":"^2.18.1","@types/chai":"^4.3.0","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.3.4","check-export-map":"^1.2.0","coveralls":"^3.1.1","cross-env":"^7.0.3","csstype":"^3.0.5","diff":"^5.0.0","errorstacks":"^2.3.2","esbuild":"^0.11.21","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^5.2.3","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.0","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.5.1","lint-staged":"^10.5.2","lodash":"^4.17.21","microbundle":"^0.14.2","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sinon":"^9.2.3","sinon-chai":"^3.7.0","typescript":"3.5.3"},"readme":"

\n\n\t\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true \"Preact\")\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: ES6 Class, hooks, and Functional Components\n- Extensive React compatibility via a simple [preact/compat] alias\n- Everything you need: JSX, VDOM, [DevTools], HMR, SSR.\n- Highly optimized diff algorithm and seamless hydration from Server Side Rendering\n- Supports all modern browsers and IE11\n- Transparent asynchronous rendering with a pluggable scheduler\n- **Instant production-grade app setup with [Preact CLI](https://github.com/preactjs/preact-cli)**\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n\n\n\n\n\n\n\n
\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![Preact Slack Community](https://preact-slack.now.sh/badge.svg)](https://chat.preactjs.com)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/master.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip&label=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![brotli size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=brotli&label=brotli)](https://unpkg.com/preact/dist/preact.min.js)\n\n\n\n\n
\n\n\nYou can find some awesome libraries in the [awesome-preact list](https://github.com/preactjs/awesome-preact) :sunglasses:\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\nThe easiest way to get started with Preact is to install [Preact CLI](https://github.com/preactjs/preact-cli). This simple command-line tool wraps up the best possible tooling for you, and even keeps things like Webpack and Babel up-to-date as they change. Best of all, it's easy to understand! Start a project or compile for production in a single command (`preact build`), with no configuration needed and best practices baked in! 🙌\n\n#### Tutorial: Building UI with Preact\n\nWith Preact, you create user interfaces by assembling trees of components and elements. Components are functions or classes that return a description of what their tree should output. These descriptions are typically written in [JSX](https://facebook.github.io/jsx/) (shown underneath), or [HTM](https://github.com/developit/htm) which leverages standard JavaScript Tagged Templates. Both syntaxes can express trees of elements with \"props\" (similar to HTML attributes) and children.\n\nTo get started using Preact, first look at the render() function. This function accepts a tree description and creates the structure described. Next, it appends this structure to a parent DOM element provided as the second argument. Future calls to render() will reuse the existing tree and update it in-place in the DOM. Internally, render() will calculate the difference from previous outputted structures in an attempt to perform as few DOM operations as possible.\n\n```js\nimport { h, render } from 'preact';\n// Tells babel to use h for JSX. It's better to configure this globally.\n// See https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#usage\n// In tsconfig you can specify this with the jsxFactory\n/** @jsx h */\n\n// create our tree and append it to document.body:\nrender(

Hello

, document.body);\n\n// update the tree in-place:\nrender(

Hello World!

, document.body);\n// ^ this second invocation of render(...) will use a single DOM call to update the text of the

\n```\n\nHooray! render() has taken our structure and output a User Interface! This approach demonstrates a simple case, but would be difficult to use as an application grows in complexity. Each change would be forced to calculate the difference between the current and updated structure for the entire application. Components can help here – by dividing the User Interface into nested Components each can calculate their difference from their mounted point. Here's an example:\n\n```js\nimport { render, h } from 'preact';\nimport { useState } from 'preact/hooks';\n\n/** @jsx h */\n\nconst App = () => {\n\tconst [input, setInput] = useState('');\n\n\treturn (\n\t\t
\n\t\t\t

Do you agree to the statement: \"Preact is awesome\"?

\n\t\t\t setInput(e.target.value)} />\n\t\t
\n\t)\n}\n\nrender(, document.body);\n```\n\n---\n\n## Backers\n\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Sponsors\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n---\n\n## License\n\nMIT\n\n\n\n[![Preact](https://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n\n[preact/compat]: https://github.com/preactjs/preact/tree/master/compat\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[DevTools]: https://github.com/preactjs/preact-devtools\n","readmeFilename":"README.md","gitHead":"9f6c95ad19464cce7b8dad37d4ebf64df3d62172","_id":"preact@11.0.0-experimental.1","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-a5AyuvVRDFkzF/sQNTEk7fhHSssq8fxUML9meWt5gDiS29F0KTnvlaMDWudQ7vuM7NZZPdw8Y2/1KeLUIqN4vw==","shasum":"5d542078fbd45e4f54c77471cc04adad5950c20e","tarball":"http://localhost:4545/npm/registry/preact/preact-11.0.0-experimental.1.tgz","fileCount":116,"unpackedSize":1067165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEkmRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmquTQ//bciLJYzez8oDN8SfL6D1r90xPtWdb2dsKdcSyY6ZIc+SEdqk\r\npoOpNXp3LxuRzDQBjZypOtsJg0nerC+T3+aJHSlMa0GETJFhnWwNRB1lpQ5O\r\nc8hQyynNcrzsZJsO70Wz4bT6OPxmRLb+KligzWmCFJdRCvFUDEjvDyTT9l5o\r\nJ9IDyp0MHBS3oolB+qF5dv45MSipY1ZI0VEJamX2SZeiW0akkz353fXws57r\r\navz++K4jNHh5YjuPFEeF0CILCnJtRrIYWo3OyOdx14nN8tVjCFlsTxFBosql\r\nvrnfaeaI9/m5pXowx/d0/4FURqSfIBZDHtzDRHYBq1cdDA3rjUlZAaMzwuF2\r\n96BXwUOAYeg5lAP77k3m2NFskPPPYEX3qyn8kL+ItS8yzCgKxN6Htq5bsHY1\r\nz3cCEPNoF0wuPgemFr1X1bAXcYJuEHtXyi1GN9V6jbiz5ihgpgYtxNH+Kn7p\r\nvqOWJrYYei1jwqkOb/NB8BWX8edGxrR/XcaxGcI0+MzTnEx/grPAJzpSOrbi\r\n2F6oHq4aJa6mu9RPrj+orpo2faXkrljkI+SgjCJjFfWF+XvJ1DOwcyYXLIBZ\r\nz6PavunLLLU5VC271oyj4Df+ZGZAEOXvvYYAxIPeGicAkIPMLe/UdoNuUnPU\r\nG+EpkpOxHk5zjfDjnoe9BFz2OnDp29xOsYU=\r\n=cy/5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8Z99eU+aG6l798txM7KXu6pvXOfol7P8I0vT4sl7FHAIhAMnY6/fM8UUsfW2i4usbHIC35vn73xaLaHlgR1Cog7VG"}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_11.0.0-experimental.1_1645365649001_0.8310639327645744"},"_hasShrinkwrap":false},"10.7.0":{"name":"preact","amdName":"preact","version":"10.7.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/server":{"import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"gitHead":"5cf5f83322d86487064e25c0e238ec9fcfe0b719","_id":"preact@10.7.0","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ==","shasum":"3bd424677a894c8199f66a881df283b44bea0eeb","tarball":"http://localhost:4545/npm/registry/preact/preact-10.7.0.tgz","fileCount":117,"unpackedSize":902162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ1pUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVcRAAowfWSWZ1matqGe0hUoJ6T4IvZoFkboyvwz12KdRd8Q+8M/09\r\n9snNDJW2TLNG6Agj+XIS0JWXW2r5CkpAs9xMVX4GOv4aCnxcTk3IqF2S4y/Q\r\nhuaLX1YgKpYwkXSpiwz9CldY0lcn2I0ow0dMR1C46t7JaztR5FIRloRtzUhC\r\nHmTtLNw21KPvfezLOP/JiXL69BifxNxHK1zF1AU01FbFinFCYAI2YJDKz3pq\r\n4FAekGOZez2Cp0SlcanQudMwojvyETMoxibNe6dx220FAtk0M0XsFGoFjY62\r\nL5MXB8dDDIac4C3p4U/73HqmdRDVEwN6ZLGqfKS0ms+pQZv89GDdXco8wiFR\r\nTSHyR7T4wC2eS1bXADCvpd1khOknEQWtvXUOcOSpKCvJ3L2OjN5u0otcfnug\r\nI2KIyOksA9/JmuCTGoPRGydhaTY5JNmFn+Y5kIjNm0xgpVu/BXc3FKru0N8U\r\n4gFVnJL93P/aTltxlDc3GPRh4c+/h3VwmVyDyThD2wYZrbIGBsViJGLTYDhm\r\nT5y1/ETbHey9Rlm4k49MS435OeAcYQmdVu33TsRqXF/PDQM6NUFuUbeZ2uq6\r\n0qkK5+XyH/9mgN0s6fDeoOzv/945JetzIruHVqNiB2m97WtBiLqLJ3j8ewvG\r\nBHo5WtUsBSXsPVM4vjj+Y6156NRSwqjkHTo=\r\n=6Z/B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDVLT3C4xQU3NTqOiIiQgHt6aDh/KK+5a2OtByehOfTEAiBcqaWOBtEGV+nVpSUttkHDptGR6BqfrWgAhkvbsWNuWw=="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.7.0_1648581204588_0.44964206126796413"},"_hasShrinkwrap":false},"10.7.1":{"name":"preact","amdName":"preact","version":"10.7.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.7.1","_integrity":"sha512-MufnRFz39aIhs9AMFisonjzTud1PK1bY+jcJLo6m2T9Uh8AqjD77w11eAAawmjUogoGOnipECq7e/1RClIKsxg==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.7.1.tgz","_from":"file:preact-10.7.1.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-MufnRFz39aIhs9AMFisonjzTud1PK1bY+jcJLo6m2T9Uh8AqjD77w11eAAawmjUogoGOnipECq7e/1RClIKsxg==","shasum":"bdd2b2dce91a5842c3b9b34dfe050e5401068c9e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.7.1.tgz","fileCount":124,"unpackedSize":906659,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcLO2vY/uNsU3YRymGKZC3eBHGh+ocZniVu6SJmR+qmQIgVfVAU1kUCpaOUN1l5qxraGlOTirF687pt+Ys7fvI/kA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTAUCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZJQ/+K1bjZ7likc5mzuWpOzpR6PzlwBIsuqWTA4y7rSb9MeQS42Ac\r\nD2AQT/4pTjDiYDFI0CAhjs7bIgieL/bm02ZbZmFLaAJ6pKZJ2dMFFPCY+KY9\r\nyQzjTLhlXTMCGYIzLO5PIDUQxBgLPVK7gWR3JpuPs6aVJVXIMuPJQP0fIW87\r\nL28wykl6Bpypu1TuL3TFUxKtCDmWlrFg+VVGjx+rqIBea11sSHyj6bLTuafA\r\n1sO1C6vkVwT4FYlTRWKF3Sk4S52v7j2Vbwgwb6wDhusg/AZlMT9dqeu946Kx\r\nCbu3FxTkXYueCgot9/aMp5+fmgChrveVwQhxTQLeBldMBGG77UzOBBfb9kgA\r\nhffe9BpBCZVX7nd3DEk+TT1HOYKPlRsAzWbfZEpP1fp35pxFE+gxcpZ0gxu0\r\nEsRHgYGPu0/v72v/atOEMvUKCRwyDsDjOczViMJZd2yg4fDU4icV4U0IHalh\r\nPvlUMbeqdO9rjTcfZ8X61OgsXShPNu6aCXgFEx+ZRHfRa3bTtJiDbUhS6jN/\r\nFUNq2w+ZBlwXd+RCW6Hre2Nr1toQaVnwkGaOQ3BTAOMCB9QH5b0DZGsmy9kg\r\nhhRSawh4zIBNWNwZT//XW5PLMLpRB1/SNEyK/e3jUnR07ZtqJ2c1+Byjx/X+\r\n1m3A1iU0txWfoRJX1qcnCmx4IKINqv2r2QQ=\r\n=aCoU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.7.1_1649149186578_0.08138976898599015"},"_hasShrinkwrap":false},"10.7.2":{"name":"preact","amdName":"preact","version":"10.7.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.7.2","_integrity":"sha512-GLjn0I3r6ka+NvxJUppsVFqb4V0qDTEHT/QxHlidPuClGaxF/4AI2Qti4a0cv3XMh5n1+D3hLScW10LRIm5msQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.7.2.tgz","_from":"file:preact-10.7.2.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-GLjn0I3r6ka+NvxJUppsVFqb4V0qDTEHT/QxHlidPuClGaxF/4AI2Qti4a0cv3XMh5n1+D3hLScW10LRIm5msQ==","shasum":"5c632ba194b87345dcaee6598b3b6529b58e6a12","tarball":"http://localhost:4545/npm/registry/preact/preact-10.7.2.tgz","fileCount":124,"unpackedSize":908470,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbowp3wgk44ob00lsUZQeyYg1cXFOoOJq+22HhZsLdeAiEA2dLrgoX82pEMOa5YSDIvVIuXTC2eWRJGvzzQeeFs4Ww="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidXDRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6ZA/+P022J+xfhCQHCD1CEifKtXfnwzwk0ARyUTFHlxr9TmDFTRXn\r\nlyDKH8zBUYoLJ66uvXCDHYqR5K2kDxlPWuCCqezfc+VAnDmchphohUELeKFW\r\nZYxK37Rf2fwbwFNYBYdXeMSEjwu9E1TnZFYD/Ziy2NBsWovcylb+c6/2giAx\r\nJlFsfPInj9GdqtXuNemCE6ne1F+DOb0PU1Bngsly9Wdvavf2GyFeJ70MNgJw\r\nItTUGoDUjYg6jcLI6PckLaB6UZTNj25RyqLzcOOHwVSPXbPkx16ErZpe0w43\r\nhkFsEZzdREgVCOIjUQzPz/YvSozrZD+f7ProAaDXZU2kPg7PCDtCDVHw62je\r\nOjfXC8Rby+WW8GafStE5XSy9J4dgyJ/GxzOiEUFsBsqUQ8ppLqsyJPkCEw4t\r\n8/buWTmXNIKBrLFlu4Y/zUXFDew11ZeKWtanpCrnad/jBOnQF1wCg/tvIVG4\r\nxbyfdJl/ro9bhtxgruJu4MkMwSrEIuBhIiETW/zQxm/tRlPDkZEyyv5HRXGJ\r\nOKMC3JGP2C2yBuZC4aW/s38sUGq4Ebyb0EO7Sq2LAk9DFVYSxGF1WLyCUqxp\r\nUWHC4Cq1TgGKTm0+8mG/yMQkV+9C52OwDuSKiIBWTUyLefILLYw9TxIlkiaW\r\nt09wJm+fBPtxDUlUQstgBY+3Yr3duExRyuk=\r\n=HUSp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.7.2_1651863760722_0.972183227808481"},"_hasShrinkwrap":false},"10.7.3":{"name":"preact","amdName":"preact","version":"10.7.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"gitHead":"8fb48b84fa60af87458bace90f7f0d9f1ed207c8","_id":"preact@10.7.3","_nodeVersion":"14.18.3","_npmVersion":"8.3.2","dist":{"integrity":"sha512-giqJXP8VbtA1tyGa3f1n9wiN7PrHtONrDyE3T+ifjr/tTkg+2N4d/6sjC9WyJKv8wM7rOYDveqy5ZoFmYlwo4w==","shasum":"f98c09a29cb8dbb22e5fc824a1edcc377fc42b5a","tarball":"http://localhost:4545/npm/registry/preact/preact-10.7.3.tgz","fileCount":127,"unpackedSize":1120312,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbq9hvWp5QblFAsbWm3882LB0Vlb6zSfq4+xjpWyLHJAiB7rERDFw4+U1CWZo5xHFuDhlE7zTJWCnpHasMENS82gA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilxQLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmohdg/+MzAZdtshjrBGIMBqQvVIWhjb9boew2frNwAoTn8U4d98GfPQ\r\nx94dvKvQLYWKY3Iz+cU/ZectrGVsXVqgKGix/vQCp4GYc5bjxN6i6kmPIQTD\r\nL4mVWmKBuUHZ9Il9y3kkJarUY7FP8OAB0+Au4YJ9Hlvs9HzvbBgk9oMdvVne\r\ntvEtdW8Zq7Zf8ivPnypmUHazzzsheRODoY4JLwognQ2/wOwFVXaI9VYTgZ6b\r\nmO8RFav4Gf6npH4eJPWghugAglE7edcKs1/2mBX+CJYP7uBuscac4bk4RUDT\r\n5zoLfk05gg8iWbMWdr1jmWYK9FYNHvUuHyxezvWPkdg4gI3midjkNIlyOsRy\r\nJG46o9hFQTp8DbitHbsq7KlBL8wKh1G+T8xnKscNvo/UXpv3TOSD0dKz6Bjq\r\nNuWrpIAFbkS0xEehA0FX3j8Urs6/3h9nwG3VMh4jz5ednS5NktUQQpJB7TMo\r\nzYl7G9YFo5jUxgtSKmDRthHDXBgsbs31mYXUfl+K3eqvgDLuJyx1QCwLZZlu\r\nvMU80ekHaeApoVPgHOEGW/QP8FEiEonNlRzzTbXDwIrbFZ5QTP+Es3dE8qIV\r\nGDn3Yv9hPF4hHJFUYuVjNNZIWHoPZiyDhsocggwbzYY6zTI8Dm+4Si+jV2au\r\nI9g3hL9vRO5Uozl3LLGS75W0LvtjmjXewjQ=\r\n=qmAZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.7.3_1654068235342_0.49204343123101"},"_hasShrinkwrap":false},"10.8.0":{"name":"preact","amdName":"preact","version":"10.8.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.8.0","_integrity":"sha512-2yXIS/h/UP5go0rBKesZqx0LuScqjECtH5pq8SQu3t6X2XNUWjCY4pcViUttDu3qX6NMxGiA/RuxOZd00QLCzg==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.8.0.tgz","_from":"file:preact-10.8.0.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-2yXIS/h/UP5go0rBKesZqx0LuScqjECtH5pq8SQu3t6X2XNUWjCY4pcViUttDu3qX6NMxGiA/RuxOZd00QLCzg==","shasum":"8b8aa30a6c848191e521506b61104dd381772c7c","tarball":"http://localhost:4545/npm/registry/preact/preact-10.8.0.tgz","fileCount":125,"unpackedSize":918293,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG8AhZK+MzZ2y1Eqk++hiFxEiYchunLRpw+CnK3/my+eAiA1jYdDMwQDoo++Dbqb7nN+XztYs0ZAb+li6iYlA+fCeA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqJp/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqq8g//Wh7ZHvKG2FcFanbVFUj+gjaVsadDU1Y56LiOUuZUPY9baZYz\r\nIIHlGSLuQcAyKS0u3Sr9f12i4bTTpT5xJI2Ph7x0FgANcufjl4aJ6C8lxWmB\r\nPnlvpuVIMqeawoMQWzAwaxC9jccx2NklmEPyWe3u+LdSfD01Ndh1FPqdGfUJ\r\nOTX+xF6L/Ww8C+j8CCTq/N4KjNHZEcOWAvKHtw8ofxbIkYjONCola8G0DOK6\r\nWANJuWHAH3CGZVERgeBgtiACkiVcMGmyQAArTM8JnRYdANp7E/Ym16JdsUgO\r\nWrZYm2RNVZgWhpbUZ0YIMZZb3wm/P76GNlzAfY9GmNCqqJwFe73togR3+SWC\r\nA4PfSMzldZt/ga5IoF7+pY6mMcipdgTzJ7dMxYccDNglOENQPjEo8vIxPwTE\r\ncN9oG+D4zrMc178igUH/UD6eUN5Tk/xQjQE0A5X3JBu+ZQcLv8iMCpHlv2PU\r\nZvAjiLJNHOQI4nBjsFDuL0UayvoubYKWiLB+so/tn2LtkYDl4gu5bYiwHcqs\r\nzU8FmWZVtKBKXTInFu8+gFBfQjhynHsP+dWwAMDl/q/q8BvtOklwfOaci/gL\r\nrwhXuW4648ElI/cuwjfhdHpmKA3rvPzLa4Gl/U2BH56GdIixlhAcmuKY7oAf\r\nqk9FWtQW/zuJQlq3JLVP7G9PQtEs19sUYSc=\r\n=XEoE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.8.0_1655216767296_0.635044882271838"},"_hasShrinkwrap":false},"10.8.1":{"name":"preact","amdName":"preact","version":"10.8.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.8.1","_integrity":"sha512-p5CKQ0MCEXTGKGOHiFaNE2V2nDq2hvDHykXvIlz+4lbfJ9umLZr8JS/fa1bXUwRcHXK+Ljk8zqmDhr25n0LtVg==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.8.1.tgz","_from":"file:preact-10.8.1.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-p5CKQ0MCEXTGKGOHiFaNE2V2nDq2hvDHykXvIlz+4lbfJ9umLZr8JS/fa1bXUwRcHXK+Ljk8zqmDhr25n0LtVg==","shasum":"54227a20a688efe41e07c52d420e7f829c33c8c5","tarball":"http://localhost:4545/npm/registry/preact/preact-10.8.1.tgz","fileCount":125,"unpackedSize":923048,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDstNuFb3ujjSwCUxHVGoWzgcggZhV4gM0jJ+QPyTztaAiAsDRw52FRnJI6ktzQFTdik5H7msEy/H9dS5qk/akNuFg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiq3C4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSKQ/+Ov6cHyaaHQzIOVVjEOY7XN+wQLtZ+Kamlo7Bpzmn8EzX083A\r\n0J2jlIW96NWaBFfHrq4jdc8B7jzwm7Pi1QJxchYZCNsWSoca1SX7vRRtLY2n\r\njqLf1AcVgSlofihNOexYTWy2ISCbp08b13ihC73rFz2CrcN4iVXPvnrnJe7D\r\n+25MQb0pMjGxiItpf4eCtMWDw4pcHUbdtCz7aboTrfzuP4WsBoAK/ERXWrsO\r\njZGYVjjMop1DoDuR2uz1e+MiMOeCWKRWszATjAB+d7BC8zPKzrwJ5BXYApmS\r\nmc2+ZVAk33uB4q2+BhIPhkFcf+HtbXdBk47SHzaIFjIvxa8h829XGq5se77D\r\neFTJdJzCfLIPir0SYE+WrzL+faou2ZgbvBm6UxU4okj53K4j+n8PsH2Cc6zp\r\nPPW1nSpdMsAVQ7X756API6RXNdBYh1fVZpGZngBVQKzP2HuiaPVxt9iU2tkF\r\nrdhWRRj+l/wcUr1hRB0FgNdD5F4xhkmPVY4peL4cFb34U2LwilzWuGJsAx2i\r\nInoYnLKxA7lmQLg9a5buvGJ8yMkgmTg6+z1oetOXoUP278rxhxJalS94v/12\r\nekOucN5QubRJ4hMPAYdO3QO9qECrr4k7GQfqrM1QSpvfGf+eZrmoKTeWlTxv\r\nCFscUgK4XD9YkDGLk1wRxYhuuJf9mWiHDwo=\r\n=rG+P\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.8.1_1655402680198_0.650553961636994"},"_hasShrinkwrap":false},"10.8.2":{"name":"preact","amdName":"preact","version":"10.8.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.8.2","_integrity":"sha512-AKGt0BsDSiAYzVS78jZ9qRwuorY2CoSZtf1iOC6gLb/3QyZt+fLT09aYJBjRc/BEcRc4j+j3ggERMdNE43i1LQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.8.2.tgz","_from":"file:preact-10.8.2.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-AKGt0BsDSiAYzVS78jZ9qRwuorY2CoSZtf1iOC6gLb/3QyZt+fLT09aYJBjRc/BEcRc4j+j3ggERMdNE43i1LQ==","shasum":"b8a614f5cc8ab0cd9e63337a3d60dc80410f4ed4","tarball":"http://localhost:4545/npm/registry/preact/preact-10.8.2.tgz","fileCount":125,"unpackedSize":918561,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD28xO9BG2+U6QBqqCorOchr2U7mUwcArMhfUsdiSAxFwIhAOOzWqe9mwz6i5g4CNVJqZvJFMZ31R91A1yiz863CuS6"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJisx6nACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpj5Q/+PvH7v1TXkGYch2Z/5+h41v5TkVEG1RSDa23BXo1dv/r+Uata\r\nW6S6Hz8Azaia9xLyHUqZZup6V2IEDswoxJ422ke/aJhU9X1jcy7/7ItMw+2f\r\npPXxa4f6hwgVeflcFmerf+NZ6QMpHAfs02RS5HOd6tXy0fAPBPxK6qHCUuoU\r\nuJdkGt7ZuM0/OySRbpZoJH/gnkx0j2BY0zBMC1AkLYs3UtG1+avoLiHRudzV\r\nxJgnl/E4mamxDaC8tTYrcah83Z7dadEk08Fo5REurGfx6I3MN1Scyk3904Ew\r\nifIoqEeLbmzW7TAj/iqodSDiPDxptAzvnevXooX3RF5mA3OWNcmZyPSJuZT7\r\nmfFGeYqpn9swbS1WeQAvnE/m0Va2fn6wXrQbCpk8pwNOnJZQ5lAC/MLdp5ax\r\n8sB4rm/TIi8IHv4tojnp2aUFVWjTE0dG9QYUGvRp2PjC54fPhFYhlFdOjlPU\r\n/tNrMW6Us2XBfdcARvNxeh0Sn+a9m7ZtY1riNVvEmyyckcTuXaPvtCxrqPEY\r\njlUEZcl7uFoVUVGuEfKp6LznTSDWR2KOrNovEKqYT8dvjrah6S+BU+v00EtS\r\nhrURhDC9gGQGR7gm6TpqQPEsLU/7syaCJ8gVTbAyw0WqmxnbrSl3EXn1hP/m\r\nrxTrq1hJhayMJt7z2qB668Tkp4iQGknbA+E=\r\n=JbG0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.8.2_1655905959523_0.16427824016176706"},"_hasShrinkwrap":false},"10.9.0":{"name":"preact","amdName":"preact","version":"10.9.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.9.0","_integrity":"sha512-jO6/OvCRL+OT8gst/+Q2ir7dMybZAX8ioP02Zmzh3BkQMHLyqZSujvxbUriXvHi8qmhcHKC2Gwbog6Kt+YTh+Q==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.9.0.tgz","_from":"file:preact-10.9.0.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-jO6/OvCRL+OT8gst/+Q2ir7dMybZAX8ioP02Zmzh3BkQMHLyqZSujvxbUriXvHi8qmhcHKC2Gwbog6Kt+YTh+Q==","shasum":"69b282b26926b66481c9ae3450cf68610fee29ff","tarball":"http://localhost:4545/npm/registry/preact/preact-10.9.0.tgz","fileCount":125,"unpackedSize":925570,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+hseEA6nnKued1T/3yM6w2u1uT3SP+a17ycJgymSb2AiEArwLnIc0IqfmdaoLRrhr+d3l9DndFTZXTuZhaOtvNPSc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixUkAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVGg/+MW4S+fYKy+CvMGzNVbDLHrR56qNKc/5DzbCLiA6cNXLyhuSa\r\n1fiCq05jcBt7BtyLYvaKBu7HmQ2MsZksSpNb54T+QpXkEl9DBW5zOYpgUDlK\r\nIxBLG+i2xnLvONKSD8ojJ47OBCOQn+b51Fk8lc+zjjD2dCe3dPZ8Rr4b8R+7\r\nisKVPAjEbBasnjfD2jf21/77qoifGDLaKvdenZaKXU6g3CZgxQcrX6g+AeUG\r\nvU4mDCh7CMRZLqgSIf41zEw5sANZVqZ+rMBjTsWhUQ6vKu0Vp7IwgoLHUEzU\r\nT8aiTXGVcVnbKKoIUx/yK4d574lXL4qQBSMGxodZ9RjLaTNmfsYpeN3CvLWd\r\nFiwjanngju5pPCaXOQ1NUTYet0J4k7TdjG9uxWboeTvpe6/jokgEFFEFth+K\r\nk01Pfd7ul2aPFkixgG3BWKBNYLZ6F1zpCGPPlO8s0IrHJXo5/F9HsIG2NSUd\r\nHxrZvnWkCEo7CtcUtwEL1868K87mooFXAstyBONERIbXzvZzR8rWPxoKhVsi\r\n5imlL+SvK+44xUBQ4sK62f2e/1ZOqE9FPb0o1HIXBPYEWBn3rv49N9Rq92rr\r\nuIF3aS9dEKmFOb27bkpP1yG0hd1ZYayZ5wvXTq8c10YQOKMLNzxNwzUIeyPV\r\nwCmd0pmVJ3u7iPQtYrYu0CwKlBffoUmTJX8=\r\n=x+a4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.9.0_1657096447894_0.4698471910185138"},"_hasShrinkwrap":false},"10.10.0":{"name":"preact","amdName":"preact","version":"10.10.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.25","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.0","_integrity":"sha512-fszkg1iJJjq68I4lI8ZsmBiaoQiQHbxf1lNq+72EmC/mZOsFF5zn3k1yv9QGoFgIXzgsdSKtYymLJsrJPoamjQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.10.0.tgz","_from":"file:preact-10.10.0.tgz","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-fszkg1iJJjq68I4lI8ZsmBiaoQiQHbxf1lNq+72EmC/mZOsFF5zn3k1yv9QGoFgIXzgsdSKtYymLJsrJPoamjQ==","shasum":"7434750a24b59dae1957d95dc0aa47a4a8e9a180","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.0.tgz","fileCount":125,"unpackedSize":923165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGOWz2ArcvAGaKApMct/XYAdblsaA2aO8k8wXEdZRlQAiALLw5icApihZVMFlmuw4sP901pt76cS9g39cd1S2svmg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizp6PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozPxAAh4NE6t0vjTMjZL7VjWi1DTvGw4R5rqCMSzb46+3TtWX0R27S\r\n+uOs84LxnWVAdpBy0Sejf3/40KcmfGYgmzf2dDHfnorkOROECIzK4zcgcYS2\r\nnWHXcuYgAU1p5rXni7E+ov/evyG4jvZmaL4WwsbJdcDw7mXz3xRFjiotn9Kw\r\nPhHeiOvZU9JGMzES6Gg125jmRpnnkfnWwctIOfcIUJNNNItdKCn0sm2gZAia\r\nFCae2uFWQ3S6Om+nxvUQu2xYcfSCQwZjI4UmeDH/atNzQ8Ni7nUSGxVjBu0c\r\nehVR/29AcOaLhtMSn/kML64VYH1n6kPywzPb7afXvu1WMLfiFu+XEPSByLb2\r\nVBRIt2wlB0aKY6HsgzKkoIXPpLPjuILvwWWZmbKyhzGsqz+YdDwK85MhXKjQ\r\nBUZmNV4IdW4Da1FLx9yKO3Sgqi1qytuIgpDzX0W+PSgk/L5JqMOwDexA07Hx\r\nrf6Ii3chD8On+NRpLb9HFvv1vbuCG9aUU9dflo0l6gGENENr9rqRWB1/i0sC\r\nAhQ/4nidZ7clRTUNAkiOFKJPsbFNrpXuxXtSKoapwfLFL87Yhc0EHvgRE1JJ\r\nbG40fBfQMKvmGODIUJvD65BdnvhiI+wWNAPtbWiagxqKNoowS0D9Ih/Mabut\r\nHXZHcUXwzyM6UlkMG7sYu0qXEoBfgMLyD9E=\r\n=+Xj2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.0_1657708175293_0.8163079607072561"},"_hasShrinkwrap":false},"10.10.1":{"name":"preact","amdName":"preact","version":"10.10.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.1","_integrity":"sha512-cXljG59ylGtSLismoLojXPAGvnh2ipQr3BYz9KZQr+1sdASCT+sR/v8dSMDS96xGCdtln2wHfAHCnLJK+XcBNg==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.10.1.tgz","_from":"file:preact-10.10.1.tgz","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-cXljG59ylGtSLismoLojXPAGvnh2ipQr3BYz9KZQr+1sdASCT+sR/v8dSMDS96xGCdtln2wHfAHCnLJK+XcBNg==","shasum":"df67e4348f50fc6ad2e11e813553f15c6543176b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.1.tgz","fileCount":125,"unpackedSize":934231,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDucg91kh9S5OGRUH+UVFXil/3UDpJRTaWJCG4JlV72jAIhAItzEFX/6Llg0kiYjjvqvQ/qw48qWRd4USwGJ/pw2z+B"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7Qe2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqlYg//VQdeXkueT4sMF1KDrGmIrv+68k2at438AqEMQTGpNz4IVkDF\r\nj+36deMIACjkFrVRbuXAwEfFWiX26KKqWSV13rw7FAhIpg8rjgFRC5HahYr+\r\nJhjHh2t6AH8L1tFrbS6ROEcIUAY0GMGMRxLiHNAvi/La6scKj4VHbGisRiGL\r\nHbPN3awE9etWWH8yFBQEfwTsRfHY9z+evepYGRqc0d37RaK8/nWikjhlwi5z\r\n+HcdBLm5xUi8Nxq6qXpnfgX8kpnXjcq7Z58Zw8fLbaeLdzmfN4kfpa5iWx0c\r\nLgdAScBrwOYu5LE/oePIX0HLmxpGNrqk/tgeAnKS8PthOJMdP9vOUFxma948\r\n90Ng4sq34m4hDLlaNEjfYUiJUp7rLQXKK88ux65iTinWeZ11ii0unQahja75\r\n5LEV4tFKOqvXSetNichKxI6dqbaBEPzKkBBUbNejdSNrHtPvu8omAZ3lxNrB\r\n7UPFu/LYQQyXGG9VW4+oE8KpwJWRMagixxcTrbeVXI35RecS/yuYM/3eAb+M\r\nA9bqqqO1GY21iAgxDb5B4ktzqGk3iCL5r35SqUbZMuHTlS+Wn/tNMYI2yDSR\r\nVBD3ENbz5XqkHcZkumi0eL9/Y7lpD5Z2wCUWcXgSwDYFUlnAK8GSM5ulz6zq\r\nk/YV09woypQp/H6m7eXB4+7PPrZs4kfCJD0=\r\n=iOp/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.1_1659701173972_0.11917497699795931"},"_hasShrinkwrap":false},"10.10.2":{"name":"preact","amdName":"preact","version":"10.10.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.2","_integrity":"sha512-GUXSsfwq4NKhlLYY5ctfNE0IjFk7Xo4952yPI8yMkXdhzeQmQ+FahZITe7CeHXMPyKBVQ8SoCmGNIy9TSOdhgQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.10.2.tgz","_from":"file:preact-10.10.2.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-GUXSsfwq4NKhlLYY5ctfNE0IjFk7Xo4952yPI8yMkXdhzeQmQ+FahZITe7CeHXMPyKBVQ8SoCmGNIy9TSOdhgQ==","shasum":"3460d456d84c4701af33ac37e9bd3054271d5b1e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.2.tgz","fileCount":125,"unpackedSize":934965,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6FrBYozKPNi4vN+Zqu+r11lqsfljnjALSN2AXzm/qMQIhALu4vz1D0HEDzGPUuTj+NjVS887U7QLaoa1CH1g8quBA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi83JxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9/w/8CMtdgsQVMaZJc8oXvsSThXroT1s++etT5eoYNAQrlsvtgitl\r\n390VjnbxfV+0OyItprGk8rsvEaYNpm4B3Ak+Z8ce5FMB2UD4+FRp7IbjaTkk\r\nf861MnQsFoCyPsDdG5jdqclHOdjajGFFYVAMBBeQReXlX++4d68XNnt+Dvdj\r\nh5HoCQ32szq8pZNkN1tyj9HRCvWj+uEeG4TFJ71Ghsu6qUUhlK/r/SE8uNbB\r\n5dKxTuJ8iG0ZwNkCMsh8+yJKs7GzxLt5+FtgOk2h7R72zSkhVTELyvg0I3RZ\r\nWy6a5JM+Qyi2z6r1o+ebUAdEXviL+eqnrML6D2H1TbEFnurCjPhlRYrwqCxq\r\nJP5zJSR5tn5v0zMABfMHadzWsfd3YNmMLK3mTLO1Ud7Mm7bB+du3x0KjRvfx\r\nd8VyXi4e+ORP4NTEQjl2Gq6Rab6EagunPuZfP/pLaw91gA1TtSOPNia2R9vg\r\nuVthfnLmYbrx4hrpbOyKNsLVs/Oye9u2eGgVo9qiBJv0s2jvFYXki7Avd8R9\r\nYNnumvN01AhynC3N+npZwV6x2OzWL2CzZ587fr5Pfq23JS2u8RPjPmPJo2pC\r\nV9HZfZsNggXU8bqI/mVGrcnSFYf5mMVqexfpi7D6wK/f2AckxpkIYvOQijeD\r\nvt29BZrO7G2pPAKlofEauxf8J3khCwSS6DA=\r\n=FtF+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.2_1660121713489_0.8943635657661961"},"_hasShrinkwrap":false},"10.10.3":{"name":"preact","amdName":"preact","version":"10.10.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.3","_integrity":"sha512-Gwwh0o531izatQQZu0yEX4mtfxVYsZJ4TT/o2VK3UZ/UuAWAWFnzsEfpZvad32vY3TKoRnSY2WqiDz2rH/viWQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.10.3.tgz","_from":"file:preact-10.10.3.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Gwwh0o531izatQQZu0yEX4mtfxVYsZJ4TT/o2VK3UZ/UuAWAWFnzsEfpZvad32vY3TKoRnSY2WqiDz2rH/viWQ==","shasum":"ea82c5dce85c8a85d541f0110507b2de195ed711","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.3.tgz","fileCount":125,"unpackedSize":938000,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6W6/QodiQNA8qK0ejrQmyxEMhBDBGe4dtGyU/0nrwGwIhAPLEfMt2oppYki0K1t27BAm8KgT39eqiRmtLLLECqHjr"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+1iQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoiiw//XhHWnYP2803tT0Qmdc/ZQX90B018K/gOFNRTGyEIkEnlRATd\r\n2ndlKty/ZnWdT1ePCDyQ6yUiIBXPyHIqLnEXt/A/0tISufTl3EHm3vB4Fz+x\r\nJxzkLx126T2imXORGfB42jRSeHT/reYWQgeMt+w3O5h1oAIUAyFde2f/pqM6\r\nqgss64kePw1LIQmOse3K2vUq62NJsZa6LqbcgesWwPzCVWDLPIFHA/2/CGqJ\r\nbW52Md6uNEGUKRBifHdm/A8kLArtLPCbptLrPLmXOF+bDXnv9svewAm21pQz\r\nY8EQ5l/dSUuTBRl8VUWux36tbm/wmQfT7QXhryhjXLX9Gb7FCeZllMm7Q79f\r\nGaZm760NhvMZjw2PNAmjPWhqVA8mpkROKly3HccNxgywfSno+RVE/npWANx8\r\nASdOjqjUQpym6wosGD1JNG7O4dt/4JehdLzxSrr1IHvsk8pzSgZFNYY9nchY\r\nHJpAWbMS5UOkMaG4g4oT5Lwd3jqypWWAhUR5NB9YPjrbwQIlDGvRI/ENLWKS\r\nlJeWdru2UIVoiPi7qj60Du8/J28jJ5kEXWDgIg1EymtmcV7mC62d0H3ckttt\r\n1mQHpL5vQ7Cd6nJSZDMn9X8LNQkVx9O7ytA8AWwntcMJwWX2k2CC/3EliMTn\r\n7ZUcHG7Q9ws8ABs5J3WnnuCyJzKt3dbwrQw=\r\n=IJbi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.3_1660639376482_0.8904578217346613"},"_hasShrinkwrap":false},"10.10.4":{"name":"preact","amdName":"preact","version":"10.10.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.4","_integrity":"sha512-3itXRadRHCZ09T5zdFg2SmgwZm7RBAGznA9W74Qwsb/Ri7SpjgGmICvwSRXFgYlXtlgJMDZqrIGP/4z53ZStZw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.10.4.tgz","_from":"file:preact-10.10.4.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-3itXRadRHCZ09T5zdFg2SmgwZm7RBAGznA9W74Qwsb/Ri7SpjgGmICvwSRXFgYlXtlgJMDZqrIGP/4z53ZStZw==","shasum":"744f624a955595dac32908c3ec518026b99df807","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.4.tgz","fileCount":125,"unpackedSize":938721,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7Ei5megzSAxDCdUkcPQPq9+5GrBRsjrrO/5QyQ3NujgIgQ720TEpNZnA3iuEUQn6S06k0k09i9HVgNRYH+X8F8W4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/qnTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzJA/+JfLHiw99yaEXgC8HMbHB/rbF8u4c/pyqVUqybt9zkx3oRrDL\r\n/vSyQd2bfd8Dam3rvbz9AaUrOe4pyaqFoAB76n85Shp7puv/nO9tpUCpEMF7\r\nIX16OiAKUNDbRPDRsTpW7Kk1YA0iPXNKi8v5o7Zx61iSg9V0FQXOiQvPi7Qe\r\nCwCL1/LCkstys3z+7Yqj7MLj8Z5cyOPQDDk0gHTx0hwMFrQ+ooxCvZzo4iS3\r\nPj5X6qIcmOkF9QkKPCnIuZhBL54qRwWp5wwG2LUmsEAprHVGbw+jkLkraHvw\r\nrgUjt3vuapejPMk+kRw8urDTF9StvKrngGm2fEt01rtIqQCgqHdj1Mc/BhgV\r\nXZhpIA6JyG+Ev1QUnndpJEcsl+8m2tMGf1oU3qlKN9Pks3/ag96AxcCS4Nmg\r\nNg5PZMRuWAsiWTsDP8xEY62q+ii2diEkmBFHWQl4CJ8nnpDECGTLbfTI+0M3\r\nCZgmGFG2hzkcZcCfMhMYdInA7/23bCqWuyaghcwdNngDDE2m4jGUgqg4n4jb\r\nCsHQyQo1buN5MW9JZdWpAW79ItejDvKl6hRDIGq7+ZhceEVVfeHu8SU1wxDr\r\nV/loyb42c4SNq1SNNI97yJGc7ig1Th33ZNTjFybXBjIp6N6REzhQLo1kYHIh\r\nCyAvHUa7T4B/Nl/iQE1gQ3OHeDZLGanxN8o=\r\n=f62Q\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.4_1660856786964_0.8949708488632431"},"_hasShrinkwrap":false},"10.10.5":{"name":"preact","amdName":"preact","version":"10.10.5","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.5","_integrity":"sha512-h+49j4BG5TebVpRyrW/vlVzErwEnuPaZ0WGnSE4j2KLcZa8IYjCe8nDcsnLhmjcK/IRjmNt4y1Pgkurc3v46ZQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.10.5.tgz","_from":"file:preact-10.10.5.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-h+49j4BG5TebVpRyrW/vlVzErwEnuPaZ0WGnSE4j2KLcZa8IYjCe8nDcsnLhmjcK/IRjmNt4y1Pgkurc3v46ZQ==","shasum":"3865361ee4c09c6ced68947fc68ffac072c05c2d","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.5.tgz","fileCount":125,"unpackedSize":938765,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYyGTMy7NEmx2nKGpOulOlVqzEd18iPfEcmjFSOvAh0wIgJAZ/BWWaYFQ3K+v9lSUYxDM5Vi/Zpf0o2Ufifau9V5g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/1BvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozzhAApLqZPQ6rxX4b69wboT99d2XRJK3uXxEk7QR0p96MhmuwjDat\r\nsQcMZGosCehLu6PoeqZResAcE2B2fpQ11GD7hNRAqng6T114/s+TVwZs63GX\r\nV7sdnL9te8D8h3NJnfwGMM1nTTBVTIsSj1ZyzZoyeOec19d/btlX5CkLPMh7\r\npXLbdG3gCfSg2BI3zKtMKzlZzZCaCHi5Hktzs/q14P7/lNWPC/A1Vv3O3ZDt\r\n/JksNMdUw5NSiHnXbN+OcsBvXRWfbBrzPGv2A/kvroUe8V7tTQsnhuC0KD4/\r\nRtjsPaEZkHAiqEQ/Kbv1l4ZEVtctRlUpbfa7F0IbJIocl1dZT+vbUpQwf4/D\r\nWcc7eKJlzebtGShFd4anSjzyaYvhRkN6rQ0e8x2GESqRIHRWXkDK8ui5RIz2\r\nttr0CKFtF/TyN6yaxWX5LerabcPf40b6xkC4q2fNBdoO5Xzz0HHzVEQ8TqMi\r\nmq7UhSdv8PcaO8eVUaVG4khNeQcv1mxDXbJa2xh9NZw66rtBUsX7WfjjUagq\r\nBL+sWJBLkakmuFkcRBlupFHd3IC+wL0nnshynWQpM5/H607dg3Yjl4sIqKbf\r\nc1+RgSEfra8IHUbYMbyw+XQvFK8EcEAVfeANGbq985PnR8KpaUC/50AB7Q8r\r\nFL+NqjTMoRv3lVhnYUUQNsPuzdNf53FOf0U=\r\n=4y+S\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.5_1660899439121_0.1847925681105813"},"_hasShrinkwrap":false},"10.10.6":{"name":"preact","amdName":"preact","version":"10.10.6","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw","build:core-min":"microbundle build --raw -f iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --cwd debug","build:devtools":"microbundle build --raw --cwd devtools","build:hooks":"microbundle build --raw --cwd hooks","build:test-utils":"microbundle build --raw --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --format cjs","dev:hooks":"microbundle watch --raw --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.11.0","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.10.6","_integrity":"sha512-w0mCL5vICUAZrh1DuHEdOWBjxdO62lvcO++jbzr8UhhYcTbFkpegLH9XX+7MadjTl/y0feoqwQ/zAnzkc/EGog==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.10.6.tgz","_from":"file:preact-10.10.6.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-w0mCL5vICUAZrh1DuHEdOWBjxdO62lvcO++jbzr8UhhYcTbFkpegLH9XX+7MadjTl/y0feoqwQ/zAnzkc/EGog==","shasum":"1fe62aecf93974b64e6a42e09ba1f00f93207d14","tarball":"http://localhost:4545/npm/registry/preact/preact-10.10.6.tgz","fileCount":125,"unpackedSize":938772,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRJKSyCtRDaZRT69vhnTP4/u4WQpziuiUC+bFcNgknGQIhAKQE96CAZAsnYk9+Zge0RcpQcmnshWGJFgWOirSd7t5I"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/8XKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqe5Q//XM6QFtuQnxY1GWPJnbAfmAa2F5qb7P2487nEcT9dxJU1YR7v\r\nOwZxCSCXHkmNW9AX5YfWaCs6W2qmyLfzeoRfQhbmlr/lRwbT17HeInPd4opz\r\n4YzV3hreH3jb9zhB+L5jDTVUXuBy69QdrOGUtVKuy/gs4MxXe8FytlwBQwwM\r\nl04DAFo2iBjZuKTgoyI379TCOkQup7l421Xl5R/NELdsn3O6HZabcQx+MzgP\r\nDdDq92YIx2xCGJHpSumrl75BDGdsJ2DCLhBnfJJBhs/w1+rckuNR3vpXsSU9\r\nGj4wVlW2I1oYCpHTx1x+AzpXl5DCqqen5pyUmbziqJvy0MjhgSkoTo+aDoJ7\r\nBd5pSFDax3lVC8BUUgr/cNxR0kNrcqPkf1EblEqzxlpbDERBH46v8l99huEG\r\npYZkKKW1+uiimwItp/cGpA8st2UYMgekwklZEAayxctiCUysGLODz38oWJ4X\r\nRixA6QSWYYgRRTqhXmIOCjfI6j3HidflJu/RZgYcqHygX6rPWDRigWRSDOCD\r\nEeKbbzBp6t4ofWCiVcl6eM2FOup0nh4z6bxKWyy4oeF7MYYMc0+5Q/tMCHhM\r\nfJB3j2Ci638A9pbbatwkHy++tRFACe6YtVY9TIHkTk1VHHIJPJvpsxFNvXIR\r\nL1CTsHH2UV2EUBknwU+wIqeOn9ZBK4yIDDA=\r\n=OC5G\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.10.6_1660929482092_0.17566919163279326"},"_hasShrinkwrap":false},"10.11.0":{"name":"preact","amdName":"preact","version":"10.11.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.4","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.11.0","_integrity":"sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.11.0.tgz","_from":"file:preact-10.11.0.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==","shasum":"26af45a0613f4e17a197cc39d7a1ea23e09b2532","tarball":"http://localhost:4545/npm/registry/preact/preact-10.11.0.tgz","fileCount":129,"unpackedSize":1139320,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdZhWBWYY3LVCDNEe5b9kcSvKNVt+7aicInnCIdSXScAiAB6T69IM3xw4oSrp/eeKNDth1MSNR8F4FUIEdiVNHBQQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHu/RACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmppwQ//Z0HB0QG0J2wI5V0EWzJV5azX5xeIPjAOBxkU/fCJpva5sMeG\r\nk4rthxh+M3B/HRin/O6g/yJ4yjTizFftjZLIjjzEJOVOa/eXMiRvKgYcaCsS\r\nIJIQMGgnuriOm+f+8yroQORp616H57AiCrnndlQf6xyG6FhcHGc67qLlgXLl\r\nC7JxjGX/Pn0pNYH8/Ro4KhzwR0UtysWiSyjZkv0/C90DYGmrBieB+SsHCzHw\r\nvbIKDFeoafkNkgDD1zBzmnS+AkYH1rXzJy51WfIcbAadjBeo0D3KkJkzUgwo\r\nOqZmj8VaBka0DjA+g2CrBg1HMdJioyCEfsGjHI91YJLnt3mQ55DTQvTtrSHF\r\nG//HIn/llsVvYD0sFCT5AHBRlceem46RuHNd/Hl2c3+NzUvnz4XX4lroPOa9\r\nvO8z3xoXVql8UYtgI6bsbFPF0Oz0Ctb08DjTyx7oL8AYO9GKo5SEDXKEvNdW\r\nze8mLe0JQK11ShiVUMOETAM0yrDcftdijhcc6uFBIwwdE/c+UwaxRzj6Qq9x\r\n4Vw8gfylwp0MjG7SAbAlnCXzPZWICvJCEkxkrLGkphZWzcoonDuzsfSsIF8Z\r\nhIp2O5Jd6qUGOElmR8dPDUs83gmTHD4PbPgcVk2LMMd3zVnMP0oi/+RTJyMh\r\nB90QCAZmmm0JhtRCw0EHzvq1cR6zaexqi18=\r\n=z5kU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"},{"name":"drewigg","email":"drewigg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.11.0_1662971857111_0.2592246924327499"},"_hasShrinkwrap":false},"10.11.1":{"name":"preact","amdName":"preact","version":"10.11.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.4","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.11.1","_integrity":"sha512-1Wz5PCRm6Fg+6BTXWJHhX4wRK9MZbZBHuwBqfZlOdVm2NqPe8/rjYpufvYCwJSGb9layyzB2jTTXfpCTynLqFQ==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.11.1.tgz","_from":"file:preact-10.11.1.tgz","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-1Wz5PCRm6Fg+6BTXWJHhX4wRK9MZbZBHuwBqfZlOdVm2NqPe8/rjYpufvYCwJSGb9layyzB2jTTXfpCTynLqFQ==","shasum":"35fdad092de8b2ad29df3a0bef9af1f4fdd2256b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.11.1.tgz","fileCount":130,"unpackedSize":1150024,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGW6Vw5iDjnmvNoNPNS63nBFmawmQNeXqzlG3WkwZy+AIhALk/5WXWQ0cYq5du31cMji7G2qDRf06PRHlCES3mYL46"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPI35ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0EQ//d85go1BrDx9Y/SrnZt0axH3bR5ooEqiIz3TwanASMqZEMSnj\r\nQ3cTnxYa9GnqHHbNfvZ/sMVnHee7CSJHU988CESkONCPreFXERXK0aoBkYtX\r\nxiqrA8Bwjcsb49AXcRQcJgN9WOxTxZzZzevgmVxk7Gp0Ab6XqJ1zIOdUpBDA\r\n5vc07Kk07PrqDOCLDWt4QuiKqaIsLiXLHxGV8nGrYPXlxdDErKJ/FCa32ngD\r\nyYWTwXONrKWxmZx7ndr55vmUGQG64gIzNB7hvwcKMLOfz6k996rNklI0Sqv9\r\nnLJnzWy4mAVc90CcYdapDsetYeihItc8b0Dk9miD8QJu9YsdRnIHW86sbKYY\r\n+zzlTlPSzMobB3InoQuIchoRQyfwJKseEj/W2Wrur1BtbUj9WvgkIbAXUGSU\r\nPGUP0GJD/oy6qwTcg1Yc7GTI/bdpme00tF+yoT4AYIWxjVOXEwMIF11CD3Xn\r\ne38nD4gcCw7mDdY+VqmJmAR+WpgIF0kIm6Nn/rzGfMnYYTpqKGvzhkeHdrGK\r\nhvd76UO2brnGJJvBU8A48R6woOFWH37GXJGOfilgyYbxV8GRu3IdXLxOTxO2\r\nlHj3WM8cpmXjnKaKjdw49inVNEpCO27hzNAbUB8S1CLkBLI+pngqwad4BPfk\r\n65E+32LtsPMkMyCjqFOOizROyDKY2teiFdE=\r\n=8Q89\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.11.1_1664912889588_0.5746333098444432"},"_hasShrinkwrap":false},"10.11.2":{"name":"preact","amdName":"preact","version":"10.11.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":"preactjs/preact","bugs":"https://github.com/preactjs/preact/issues","homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"_id":"preact@10.11.2","_integrity":"sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.11.2.tgz","_from":"file:preact-10.11.2.tgz","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==","shasum":"e43f2a2f2985dedb426bb4c765b7bb037734f8a8","tarball":"http://localhost:4545/npm/registry/preact/preact-10.11.2.tgz","fileCount":130,"unpackedSize":1152963,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+pd61OcHTFrO8FswboNj2WxE/x36SqzU/nvhNoPN9FwIgDIlFNVqe6p+WLHiaRNfwh53Jp39LtUIlahAGLQbT1iY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSng0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoK8A/+O3MtCnWZhj6aIx+1IgBJXlVuYTgMdRy0T+X0LzYonls3/g+v\r\nI4z90h0VBvV3VtJjw7rym0fAiT0wbRZhnpgV+xIhQzMei7ooP8ONVD+lb0K8\r\ne2Lr3MyErGGrfKq/6vNaibsKHcAxolluikjpJnlOxCv1gA2299Qe1qR85o/T\r\n0DS6SCP60GHjsqoFtKnI9jELHAOLNefFXu0UDwAX7Q7DLS6Np4sfQ2r7kDTh\r\nOMqe19ZIbCA+WpsvvAtkVCPO4rv2erOg3CT6D2ao7423MjkdChTxZAPMHr56\r\n5at7Q9jYzMXwhP04Rem2cxI0sYA37DHqEQq2YgFWL7y4L1oABGAfjQNoyLCz\r\nBlaV9sk1zfI5mUShi34XYgGwJEEiIfzl7etfwtKxq+oYmsBp4yzoauR3y+gM\r\n4RY/P6tEv6VB0kPPpQ921nAHMk0vbpKgAdAOX9m6JYpZaS8ER/cLHx1EXqFI\r\nBeIIiDD9S9oPtlgXzap+4XovXu62d+/GgNZc/YFwEm0Kkxjc43TfK9QN6BsS\r\nLolQVhCiHVynv9rGcE5uNC3KOt5slAiBeClrSf77DgszvsNU2xprssRS/PnB\r\nFS4G/EwWtWHZEL8Y5olaApJ4E0lmlBjN1tmqxfzqOff5HJr7ZPTAErzOIykP\r\nPRIEcdFbsqhfLq8aFR/r2wfplee185lxT6s=\r\n=fjv5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.11.2_1665824820372_0.561796184540909"},"_hasShrinkwrap":false},"10.11.3":{"name":"preact","amdName":"preact","version":"10.11.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"volta":{"node":"16.18.0"},"_id":"preact@10.11.3","_integrity":"sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.11.3.tgz","_from":"file:preact-10.11.3.tgz","_nodeVersion":"18.11.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==","shasum":"8a7e4ba19d3992c488b0785afcc0f8aa13c78d19","tarball":"http://localhost:4545/npm/registry/preact/preact-10.11.3.tgz","fileCount":125,"unpackedSize":1146464,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNlBJn74WJUVJ6u0Y8mgYMUZqZgdZNXtjIOVS4zwgfMwIhAMGJ7uAdFPGHZaRvjObEDAaQk+Qmwif5CmHrhY4p1KPu"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcfiDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqrQQ/9EJrIAM3ApE/O4nvBrZp9Y0yYZgkTsoH9ojN0yrqlpthKUkIi\r\nTSRjXajK/71051KtOwnk+QUhSQzfb00ixKK1Je69vIHNQ6vcnS1EhwtEKINY\r\nmK1kKiJDhR81Dcl4q5IB3pt5G/7ufGfyyigYbyjv1WFfA/KwUQMcDmZtxp3F\r\n0OGrX+NnR0TvQawoyLpznJ8sUUzX+T0VIDOocU9jdIEjqigoujgjfMo28hiW\r\n9NkyZeFfHR73QmRkDlB8pFctS9UHs+KR1AtH0B0sWc7POo0wqNWqRjgjS3hf\r\nzimBXpL9WSKIoUBTjh7Ye6j3il4Xqh8yXIQRX4JHdy4zPH4kT3jgQavH2yzH\r\nzhfFE2FHFekUmnQff3nz9EvG8cCdibefJW0pCJkJCwH4eMR8ZLnpad+RvRmv\r\nacApg0M9ax/HJ3iD/a339Q2fuQuEIxzeySlHI4mL1U0KjRFzEIkFwoAscepy\r\nqZ0eCW58AzADMl+2CsQTN6nley+K5BqusWlgO7u4iFCvnwr2nh9SZzLRaoCl\r\n4MC8A4XOopppeaLYrXKwvH1VIN8cxeQ9moRGP67ojC7Mj1KN8TdNOE9q9D8O\r\n28R/i56uq7pM7EoADaCrtxqm5NV41eGUOY4PSByvQBgMM0c4+2OeUUsZuFsc\r\nuuiXjig+uivlAYCEJg8GFDSBrlKbRz1HNNY=\r\n=syHW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.11.3_1668413570762_0.6438603828845579"},"_hasShrinkwrap":false},"10.12.0":{"name":"preact","amdName":"preact","version":"10.12.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"volta":{"node":"16.18.0"},"_id":"preact@10.12.0","_integrity":"sha512-+w8ix+huD8CNZemheC53IPjMUFk921i02o30u0K6h53spMX41y/QhVDnG/nU2k42/69tvqWmVsgNLIiwRAcmxg==","_resolved":"/Users/andre_wiggins/github/preactjs/preact-v10/preact-10.12.0.tgz","_from":"file:preact-10.12.0.tgz","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-+w8ix+huD8CNZemheC53IPjMUFk921i02o30u0K6h53spMX41y/QhVDnG/nU2k42/69tvqWmVsgNLIiwRAcmxg==","shasum":"5126a361365b20dbced92e8eea459bf094069909","tarball":"http://localhost:4545/npm/registry/preact/preact-10.12.0.tgz","fileCount":125,"unpackedSize":1183074,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqVuPRDZNNfZVWcbJRkDFuR2Ic+xNAcMTqOOJlNGd9nAIgCy31QFwt2IrXNWlTvaYZ8i2Jy63752nXrMLELBYoNbg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4XJqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/wQ//QW2zztQR448QbizfJbcWwPf6IHyTrCqwGGEnw3FDzLQFQRHg\r\ns/otxwpDP7t6tauvHyDQ1ILMhbYb7ep/UkUR3VJHuAiLjcIrFB0gbUx6WF41\r\nVJ72uMweY3IkAEOgUD3j5eDksR4Bu87MXJMAil6XCQy4pBMXsJ1BCiVBuZ1K\r\npqFBL+PrHB8jQIkM6V+LYtbXehh05NAW5cPpp6UY4gUqirV6pfTFIkSO42VE\r\ncbMsl2FLJP7oBeycgXxagijANC2rhJoi6N7ulSfzSstq1fNxmziYvpEcnRhP\r\nYRDeTJGYZ47PR2xV1xLEXVRvjZsrtyRYDDcdUI1Yc46O2H+7RWfM64B4mg57\r\nftFli4IHxYug46vI0Mzh3ctIiAaD071RxhLA356Kcuo8MxwzEfGq3BmRo1Qd\r\nXT0jncbgCJr8yAHU0TGeqg7oOaL86cRIPJuHeMSP3dSMY11H647eQ+NCx4UB\r\nIEzOgjyO0YJapl9j8Vh4hzrdUC20tdX321Qyk0owNHrnW7OteLvH6y2SXXcW\r\nfvJv2iH/To8oGOQGkt2NaHsWId2/SRWbrfyxmvhXwfA6M/WB+iQF+bMT3ich\r\nI1ZL5mZJrpXZ59fWgpbq5Haf9tQiG2+FZv2FgUg9Rt6fCxa7vLvJFnfpsNaa\r\nSNgdF7Nqq7nFZyI9FeoY66lL5/Az2PQR+d0=\r\n=1XBf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"drewigg","email":"drewigg@gmail.com"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.12.0_1675719274339_0.83270687414926"},"_hasShrinkwrap":false},"10.12.1":{"name":"preact","amdName":"preact","version":"10.12.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"volta":{"node":"16.18.0"},"_id":"preact@10.12.1","_integrity":"sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.12.1.tgz","_from":"file:preact-10.12.1.tgz","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==","shasum":"8f9cb5442f560e532729b7d23d42fd1161354a21","tarball":"http://localhost:4545/npm/registry/preact/preact-10.12.1.tgz","fileCount":125,"unpackedSize":1185208,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKaPevzoZE8CJ4GdHkoJIUz+h4j3UX5b7rs7+cLbLGFAiB8cRvBb/nUTQGNmJvcE7qJ13SM/a9OUNqfOiYU8fvskA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5TxIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpATQ//bulTueqmqAvt/nnZRZOOPbTILwksPdBnX/spybs2CmQVugbO\r\n0Pmzr+bQVH0xVSoLKyBpA8Z7r30xC7cRqAp1/HBRx0h63wllHe6jo/BechBu\r\nljyYhrm2tVR/ki0HhOcRqnBi9YYMZBJelcSz7ST5VwfWjuMhW1kSqrz2uaTB\r\nDIPYUK2xGJpXEmq0a3IbH8LwxDxwKxQvbXVE29KODz1dIhMLWtDkuVrkG2kd\r\nbGp1LXaOW7hqiLlNJAIEiP67NkH0ycJeQD+MvqEQZksGXwRDHwikKad9uA1U\r\nouqFJZJAPAIETtoTCq6TXKwCl99HKqfCBShWUFbxy2hp2X+k9DnrNtk9ngf5\r\nLcdoOdShRRGbfMx+G96Cow6gtd1ECo51QrgLgM59rzPuG2B24tJ+GRt6UfTL\r\nPb2cWTrfL0bWEkBbNfIPHPo0N1PCHgvGctPZORZhTDkccbvHHRkRu8cOxNiz\r\nIbBN/0XpewoAla98u2tLZ8IJa/z0gN/jOW/IWX8fRzprU5MoP2kDlq+LksDL\r\naYEQBeMuuyCq4H3Z6p+vzxb3q1fpsvKhC2s9TS5rRffVsH6Kc8HYAM1UW8m5\r\n5Y8L/VvSMkY+CLkL49XI5kw3FWk6gSxyu9tezIXewseeGu1VC+nLp/TPiTrE\r\nb+Vg+ZVfg+brNtq4Ft0FluGDV3zD11qRcYY=\r\n=JrhQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.12.1_1675967560365_0.22044703824828638"},"_hasShrinkwrap":false},"10.13.0":{"name":"preact","amdName":"preact","version":"10.13.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"volta":{"node":"16.18.0"},"_id":"preact@10.13.0","_integrity":"sha512-ERdIdUpR6doqdaSIh80hvzebHB7O6JxycOhyzAeLEchqOq/4yueslQbfnPwXaNhAYacFTyCclhwkEbOumT0tHw==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.13.0.tgz","_from":"file:preact-10.13.0.tgz","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ERdIdUpR6doqdaSIh80hvzebHB7O6JxycOhyzAeLEchqOq/4yueslQbfnPwXaNhAYacFTyCclhwkEbOumT0tHw==","shasum":"f8bd3cf257a4dbe41da71a52131b79916d4ca89d","tarball":"http://localhost:4545/npm/registry/preact/preact-10.13.0.tgz","fileCount":125,"unpackedSize":1196648,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF63M3j27IjW7wcC7Knj+E7fefaCaHQz/Ifm4WVZIwAXAiEAvRjCqASAQ4hPD6+6sM6QNBzbpgXBSIozWWnta/dSl4E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+LbXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFmA//RptpnU0UvapbYBcZIwliJNQ7DisxaMnzziKAg6roK41CCBLi\r\n2wfVsXg4tLJued2hnn6SZrn1aHEcNp31cajFgFPo21MqjK1LzG/7N6UPDjt/\r\n0pm1+kzFqlIyBC5ZWslvYQGPq+HnKhQGMDraI3qUyvMGnGfFSc+XOJXA2IC/\r\nrWEw0xwxtTyehoMXdDODV/Hgbb6n1gnY+QJEF9JND22gqPUH+DtSWzf3Vw9G\r\noNjgC/ZHY9bxkXcDx9gGGMNfmkqKLGLbEDtvIH9ViI4Kkpe/nXu2TIt8OL4Q\r\nDn4Av7A5btsWcfk/JLjcruaLuLaZwVjUWySvXyu77rDen3cpEZEU0XpuvXZ9\r\nzDxR3MDV3CERfmFP5lsjU3n8KibLYMtdnWp7ZMEBPRVc2sW2HGFrsWqCZLgG\r\nbwhVpRxyPOflE9G+Ery7HYC46zSNfkh7zA8ghHcmiRvWFZkj9OKk+8YVjDK9\r\n5Q7c47nRLC8M82uCoMWKDFHBOkYV/L5sDMmlhkYY8CznCiKx1WGowpnXc66H\r\nWbtFTMplzyiAmCoZAq42ialdQ85JLzxJTSU3wstofHC+WnDWBDZENq5XhuGq\r\nFqP8nA8gdqJ1+Wj9SJF9wl4ijkkMvMS3kfXypoBE8Ca1EFwHgwcuV6+6sE49\r\nmbc1H/qApzjwBHUDXXbJuB/RUWS2/VFhqdM=\r\n=AkFq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.13.0_1677244119122_0.5133323766823148"},"_hasShrinkwrap":false},"10.13.1":{"name":"preact","amdName":"preact","version":"10.13.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"eslint src test debug compat hooks test-utils"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","useTabs":true,"tabWidth":2},"lint-staged":{"**/*.{js,jsx,ts,tsx,yml}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^1.18.2","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"volta":{"node":"16.18.0"},"_id":"preact@10.13.1","_integrity":"sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.13.1.tgz","_from":"file:preact-10.13.1.tgz","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ==","shasum":"d220bd8771b8fa197680d4917f3cefc5eed88720","tarball":"http://localhost:4545/npm/registry/preact/preact-10.13.1.tgz","fileCount":125,"unpackedSize":1203335,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEAp5/3KFe0SfIGcxYMILEN2WKA/oqytFjxaf/yv5ZIoAiEAj9eXsOBLfzhboNzt7F0LpL0wRDsSJ4nRv6rFjdDJHDo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCe9hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEVQ//dlIXzfE9rF0CQmMiS3ZFEqkEUGRRjvmmvpeXzagQNqkZ0Z7C\r\noWEsFGZFwEaJTYCNN8SzWt7yAAQGVvOgMTUyPj196enon3DVCnRDwCVrNfo2\r\n4404RsoFiWI5xO8U35LWWqPJrE7Ipu9fsaeK6UXdk9wjfY2MzFLNRXAcFlEv\r\no3XfLMBOaA3PQu3I7XUJB+Njm2e2aG+tZL0xHtQFrWdNUc9XofE0E06vqQS5\r\nC+upt6FLArMtb7shqWT2NN6JCqtesr59RUfx2wCajeA3I+AruvIB9QGgzSyg\r\npd5pkn8pwchtNcW4ZCLsTJSlu2aQVbfxC3L9vEeAAmRW6hlJAwy11endwBv1\r\n8JT8v4Sd3NgFg/wHFQfj6HvACkySeGPp3ZmvrJgQsk/aOV2HLot4ZGI1hCiT\r\naxRXlmLZMiQUMmqNhZwGl5mEN+ODdsmjboGIxi/pIppzb2t0fwaUSWeDw+Ax\r\nxnT/bzeGG5FJnILTwTh6mmR3S3H0fuhqnK/HPOxtSq7qPo9H84z3YOZG6YHY\r\nzvMhBQiHxK30SxTiOtqw60F7k4j+SjfpNinHAIUC6+lqNQm+LsyLZ3uyN73w\r\n1MsGXJj+5Xm4E/uPH9c5l18nsfKyMFj3kZUP8QYRIbIGivXdmmLt0ak3ilrO\r\n5je0+CFAWD+Kx8pwCFLsIjluCYk3FmR6wPA=\r\n=aV0X\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.13.1_1678372704877_0.5099460687305626"},"_hasShrinkwrap":false},"10.13.2":{"name":"preact","amdName":"preact","version":"10.13.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"volta":{"node":"16.18.0"},"_id":"preact@10.13.2","_integrity":"sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.13.2.tgz","_from":"file:preact-10.13.2.tgz","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==","shasum":"2c40c73d57248b57234c4ae6cd9ab9d8186ebc0a","tarball":"http://localhost:4545/npm/registry/preact/preact-10.13.2.tgz","fileCount":125,"unpackedSize":1205947,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyFbhBntR/rnwTRC8i0XyrolVX6ryXusxbPawl3/+IsgIgOZZxElUBVOCcvMrJjGnmxU+0MbBx+zoeHX3YJg+zF6k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIVThACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHIw//XjxLnN2yGoQ1WKgrO/LNE8A5uTTz2c50+pgbDRQazqX93sR5\r\n2yyFBr50RHP62Iwu4/Xi+ii2UvYpV4CN9eeUUBExvDmDRtRtn0jI9Z1TeUXi\r\nJTc6tG4DAX50VwL+qG0S2UUSaWWkdjCq1QIhMMVT1ZFDgy0jHcU/flB3/ggF\r\ngyf3jkBliWKms+LJTTV4PjF4weqDupiC3ROLfW2k2/oCxiiHu2zLOXZdF/yc\r\nO/T+GKlFB/l4vGxnUAStrt9FydNv0pIWjCyJVJS3Z450exzGApJoXAERtL77\r\nwVVkwa1hYfhNj62OCa4qNPIVHw9OlgudAoMrlcze6WmpsCNIQCEzCuJKyIEr\r\njpWlmYR0KxLE4HVOiEYrnVmAdJ7rk1WEy3rnekgxjPNvQk3TOf60q1dAWXBc\r\n2uCKo2fWMfio40YB6rloE+ymB10ga/pzDErD7DdXBrlh41fQ1dB8y48QO7QL\r\n02AULiOWNZTq4k+c4rGDqS3sMlCDytLX39JHC+vwMRQ0YGXIiQ7NN6gF/bl5\r\nIag9TtnpDD7IEW5Jho99JSrltHC1J9ZtcAV++1+5kRTZQ5IHmfHgDdIWDp+3\r\ncdQrq7x2w6up6MKqsHhZm1/Q9bBfHeePBouvwXeT3ZGLy+h5+i0ai26staRZ\r\n1K7ZkdpwZAK0R/99L8mrhf1r0ZAEOTPF8Pw=\r\n=EpFe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.13.2_1679906016955_0.3898827970456302"},"_hasShrinkwrap":false},"10.14.0":{"name":"preact","amdName":"preact","version":"10.14.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.14.0","_integrity":"sha512-4oh2sf208mKAdL5AQtzXxE387iSGNWMX/YjwMjH6m/XROILKAmx5Pbs2FsXrW7ixoVGGjpfYSBB833vOwYxNxw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.14.0.tgz","_from":"file:preact-10.14.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-4oh2sf208mKAdL5AQtzXxE387iSGNWMX/YjwMjH6m/XROILKAmx5Pbs2FsXrW7ixoVGGjpfYSBB833vOwYxNxw==","shasum":"7353812c33ae79c1fa91bfd792db030a90565da3","tarball":"http://localhost:4545/npm/registry/preact/preact-10.14.0.tgz","fileCount":125,"unpackedSize":1231233,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxyynlAwBsxSjoBntwDE893SN4zk+QdlFYf0GczJVBkAiAjGUXL+3sU50qMaXP2DMuXBL63Rsd0j4mDazqs+XI9Pg=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.14.0_1684060056829_0.07585813077202719"},"_hasShrinkwrap":false},"10.14.1":{"name":"preact","amdName":"preact","version":"10.14.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"4.4.2","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.14.1","_integrity":"sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.14.1.tgz","_from":"file:preact-10.14.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==","shasum":"1e15ef6a09e241a48d12c872b90557914b03abac","tarball":"http://localhost:4545/npm/registry/preact/preact-10.14.1.tgz","fileCount":125,"unpackedSize":1232004,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCedQENMstiDWRRtLSIwBpaAQH6+rWRlmiOvYRg552twgIhAM35ZwSu1YHUO6vh562lakS5KSxStpWvTeholCoBskJp"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.14.1_1684250536026_0.8750554433811624"},"_hasShrinkwrap":false},"10.15.0":{"name":"preact","amdName":"preact","version":"10.15.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.15.0","_integrity":"sha512-nZSa8M2R2m1n7nJSBlzDpxRJaIsejrTO1vlFbdpFvyC8qM1iU+On2y0otfoUm6SRB5o0lF0CKDFxg6grEFU0iQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.15.0.tgz","_from":"file:preact-10.15.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-nZSa8M2R2m1n7nJSBlzDpxRJaIsejrTO1vlFbdpFvyC8qM1iU+On2y0otfoUm6SRB5o0lF0CKDFxg6grEFU0iQ==","shasum":"14bae0afe3547ca9d45d22fda2a4266462d31cf3","tarball":"http://localhost:4545/npm/registry/preact/preact-10.15.0.tgz","fileCount":125,"unpackedSize":1222441,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV4odpUdHuHeVyIS075DHhZ8uxjg8jbQmLI57I7VqWRQIhAJdnulEclDBTh7f9ThowzGQajdJHqEEmGlIV9JOY3bZt"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.15.0_1684695911585_0.21451261914477726"},"_hasShrinkwrap":false},"10.15.1":{"name":"preact","amdName":"preact","version":"10.15.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.15.1","_integrity":"sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.15.1.tgz","_from":"file:preact-10.15.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==","shasum":"a1de60c9fc0c79a522d969c65dcaddc5d994eede","tarball":"http://localhost:4545/npm/registry/preact/preact-10.15.1.tgz","fileCount":125,"unpackedSize":1223023,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDvFPzTJb3iSKxJaQJZbwPiyLU7nDt3G5yLe+m8F4VvAiBxbalLWQiflIXMCb3yePTyBqcSWE4nKqxeVr3cb0H8fg=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.15.1_1685179713702_0.3660886484425372"},"_hasShrinkwrap":false},"10.16.0":{"name":"preact","amdName":"preact","version":"10.16.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.16.0","_integrity":"sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.16.0.tgz","_from":"file:preact-10.16.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==","shasum":"68a06d70b191b8a313ea722d61e09c6b2a79a37e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.16.0.tgz","fileCount":125,"unpackedSize":1237787,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcl3nbIyyUExeb2Zh7cDvycGari+jtIbo8lMJFcDquiAiA356wsIobzzSEvhbP3H+GR3riNJSMVvPrJd2Y4yPCZrw=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"lukeed","email":"luke@lukeed.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"harmony","email":"npm.leah@hrmny.sh"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"solarliner","email":"solarliner@gmail.com"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.16.0_1688889715264_0.8775933500495781"},"_hasShrinkwrap":false},"10.17.0":{"name":"preact","amdName":"preact","version":"10.17.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.17.0","_integrity":"sha512-SNsI8cbaCcUS5tbv9nlXuCfIXnJ9ysBMWk0WnB6UWwcVA3qZ2O6FxqDFECMAMttvLQcW/HaNZUe2BLidyvrVYw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.17.0.tgz","_from":"file:preact-10.17.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-SNsI8cbaCcUS5tbv9nlXuCfIXnJ9ysBMWk0WnB6UWwcVA3qZ2O6FxqDFECMAMttvLQcW/HaNZUe2BLidyvrVYw==","shasum":"77c0e3402767c999ac0f1ba39bd43cd85beab06b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.17.0.tgz","fileCount":125,"unpackedSize":1239377,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWtp/polPXBCd8SxyNHkBUR61srwg/v0qhlgsw2Z42vAiEA+PXkVs6efLYahWyVyaWEvKnna3+lWF74YHKWRqyKG1Q="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.17.0_1692019440251_0.9385741215468795"},"_hasShrinkwrap":false},"10.17.1":{"name":"preact","amdName":"preact","version":"10.17.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.17.1","_integrity":"sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.17.1.tgz","_from":"file:preact-10.17.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==","shasum":"0a1b3c658c019e759326b9648c62912cf5c2dde1","tarball":"http://localhost:4545/npm/registry/preact/preact-10.17.1.tgz","fileCount":125,"unpackedSize":1240437,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEqyZZtpZquvmTITUMQtdtnSqxWkODyPO0pOnntcwDdNAiAsl61bD2uUjagYnLzcq1lgi13XqxhcldX4kxGTocNoFA=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.17.1_1692431200508_0.5937920442563267"},"_hasShrinkwrap":false},"10.18.0":{"name":"preact","amdName":"preact","version":"10.18.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.18.0","_integrity":"sha512-O4dGFmErPd3RNVDvXmCbOW6hetnve6vYtjx5qf51mCUmBS96s66MrNQkEII5UThDGoNF7953ptA+aNupiDxVeg==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.18.0.tgz","_from":"file:preact-10.18.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-O4dGFmErPd3RNVDvXmCbOW6hetnve6vYtjx5qf51mCUmBS96s66MrNQkEII5UThDGoNF7953ptA+aNupiDxVeg==","shasum":"20aaf95e3ef310a8127489376f54331682c353c7","tarball":"http://localhost:4545/npm/registry/preact/preact-10.18.0.tgz","fileCount":125,"unpackedSize":1270117,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC71R7G+ULYCPZHnCLrw+SzPiopW6CR94Tb7h2VFhJgZwIhAOdqfiRMPmRQzU+V90McZuWVoGunzy2eE9nueT9ywwl6"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.18.0_1695893590865_0.7960995229907131"},"_hasShrinkwrap":false},"10.18.1":{"name":"preact","amdName":"preact","version":"10.18.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"16.18.0"},"_id":"preact@10.18.1","_integrity":"sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.18.1.tgz","_from":"file:preact-10.18.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==","shasum":"3b84bb305f0b05f4ad5784b981d15fcec4e105da","tarball":"http://localhost:4545/npm/registry/preact/preact-10.18.1.tgz","fileCount":125,"unpackedSize":1270466,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJA824zVKb3Nf9Tt8qibMTJUJP4i7LAvkLjj6jIPqzfAiBDKKm5HuaK2mm6y5StkAuK3Z4RSERP5BVMo1IfuQ8DiA=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.18.1_1696152139234_0.21177680584384717"},"_hasShrinkwrap":false},"10.18.2":{"name":"preact","amdName":"preact","version":"10.18.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.18.2","_integrity":"sha512-X/K43vocUHDg0XhWVmTTMbec4LT/iBMh+csCEqJk+pJqegaXsvjdqN80ZZ3L+93azWCnWCZ+WGwYb8SplxeNjA==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.18.2.tgz","_from":"file:preact-10.18.2.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-X/K43vocUHDg0XhWVmTTMbec4LT/iBMh+csCEqJk+pJqegaXsvjdqN80ZZ3L+93azWCnWCZ+WGwYb8SplxeNjA==","shasum":"e3aeccc292aebbc2e0b76ed76570aa61dd5f75e4","tarball":"http://localhost:4545/npm/registry/preact/preact-10.18.2.tgz","fileCount":130,"unpackedSize":1276565,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7koOI/Ik84/QREH3BPjZBbRKK0qspmiQWWTRZd+KMIAiBCrnHkqQ01yoa2lZ08118OMF3p0eOTy2xDpREYoIzG2w=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.18.2_1698998715396_0.649296106993904"},"_hasShrinkwrap":false},"10.19.0":{"name":"preact","amdName":"preact","version":"10.19.0","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.0","_integrity":"sha512-klJSys/ljj/Z97DrYogoUE2R2qQCtHQD9kJAEDzn/sTDx7dXAfGEbGKvLLVLs2Mhy3t5RDRGrDcWPNAky6KsUw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.19.0.tgz","_from":"file:preact-10.19.0.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-klJSys/ljj/Z97DrYogoUE2R2qQCtHQD9kJAEDzn/sTDx7dXAfGEbGKvLLVLs2Mhy3t5RDRGrDcWPNAky6KsUw==","shasum":"a6b65f8b4d18b07aa54d9b09f3da3f8a28d37ec4","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.0.tgz","fileCount":131,"unpackedSize":1332329,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwygEtYv3uk8ZhG+gP6xJJhs86Gxtc4bX2PEprSAUc1AiEA5iJ0W8ZkfbE0hqLPNpkQqG2zzhjMV/w25/lLDxh4p8M="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.0_1699689807131_0.929133035977352"},"_hasShrinkwrap":false},"10.19.1":{"name":"preact","amdName":"preact","version":"10.19.1","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.1","_integrity":"sha512-ZSsUr6EFlwWH0btdXMj6+X+hJAZ1v+aUzKlfwBGokKB1ZO6Shz+D16LxQhM8f+E/UgkKbVe2tsWXtGTUMCkGpQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.19.1.tgz","_from":"file:preact-10.19.1.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-ZSsUr6EFlwWH0btdXMj6+X+hJAZ1v+aUzKlfwBGokKB1ZO6Shz+D16LxQhM8f+E/UgkKbVe2tsWXtGTUMCkGpQ==","shasum":"821b243a08ad4b71c77aa4f5a5035588e86c047e","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.1.tgz","fileCount":131,"unpackedSize":1334262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGqZhTGjPnYyHrp+opSxVBk2cccc6xfria2rtodJPJxAIhANfcQVBElzE8q48KfSRJFgqtfrni9wkKm5pzBgM5+9hM"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.1_1699697889521_0.6611432129516637"},"_hasShrinkwrap":false},"10.19.2":{"name":"preact","amdName":"preact","version":"10.19.2","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.2","_integrity":"sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.19.2.tgz","_from":"file:preact-10.19.2.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==","shasum":"841797620dba649aaac1f8be42d37c3202dcea8b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.2.tgz","fileCount":131,"unpackedSize":1335408,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaLaWLR94RxnlkOQvQW9Y3lPauRMcX3GKNK4WryAfiIwIgOeKNi2lFOzwqnQJ2VtH0X3CFWzXM7nP36UvClDTv47o="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.2_1699941518338_0.3177947154327978"},"_hasShrinkwrap":false},"10.19.3":{"name":"preact","amdName":"preact","version":"10.19.3","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.3","_integrity":"sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==","_resolved":"/Users/marvinhagemeister/dev/github/preact/preact-10.19.3.tgz","_from":"file:preact-10.19.3.tgz","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==","shasum":"7a7107ed2598a60676c943709ea3efb8aaafa899","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.3.tgz","fileCount":131,"unpackedSize":1352265,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKwQPdVh0E/JprDoeIuPkoWZ8FhnAy3CFYzRMbqu1DHQIgcAqLEp9a44xWnGpaXslGzb/TfD7HnZg1aZByYW3zDLg="}]},"_npmUser":{"name":"marvinhagemeister","email":"hello@marvinh.dev"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.3_1702045899140_0.9545393028700841"},"_hasShrinkwrap":false},"10.19.4":{"name":"preact","amdName":"preact","version":"10.19.4","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.4","_integrity":"sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.19.4.tgz","_from":"file:preact-10.19.4.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==","shasum":"735d331d5b1bd2182cc36f2ba481fd6f0da3fe3b","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.4.tgz","fileCount":131,"unpackedSize":1368382,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCk/DizxP3erZlp+ApRoLH4nV0aMEf+Xs3Bzyo3Qt6dkwIhAPQe7VMejfnv/nX2sOGmeiknKWxwM8MxGaKiyGMmvqs+"}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.4_1707376017970_0.17534023301513257"},"_hasShrinkwrap":false},"10.19.5":{"name":"preact","amdName":"preact","version":"10.19.5","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.5","_integrity":"sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.19.5.tgz","_from":"file:preact-10.19.5.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==","shasum":"ed220be0d3273102b5c97dd0163468164064d9f1","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.5.tgz","fileCount":131,"unpackedSize":1370985,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmn+QImWBHLTF9JBDrRWt9I7zENwS2eGIBiY5o5PErlAiB8EoPOMYOvycOt1us8ox083ywojkIrgBodSPRc2zisYA=="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.5_1708076574496_0.8644050384380673"},"_hasShrinkwrap":false},"10.19.6":{"name":"preact","amdName":"preact","version":"10.19.6","private":false,"description":"Fast 3kb React-compatible Virtual DOM library.","main":"dist/preact.js","module":"dist/preact.module.js","umd:main":"dist/preact.umd.js","unpkg":"dist/preact.min.js","source":"src/index.js","exports":{".":{"types":"./src/index.d.ts","browser":"./dist/preact.module.js","umd":"./dist/preact.umd.js","import":"./dist/preact.mjs","require":"./dist/preact.js"},"./compat":{"types":"./compat/src/index.d.ts","browser":"./compat/dist/compat.module.js","umd":"./compat/dist/compat.umd.js","import":"./compat/dist/compat.mjs","require":"./compat/dist/compat.js"},"./debug":{"types":"./debug/src/index.d.ts","browser":"./debug/dist/debug.module.js","umd":"./debug/dist/debug.umd.js","import":"./debug/dist/debug.mjs","require":"./debug/dist/debug.js"},"./devtools":{"types":"./devtools/src/index.d.ts","browser":"./devtools/dist/devtools.module.js","umd":"./devtools/dist/devtools.umd.js","import":"./devtools/dist/devtools.mjs","require":"./devtools/dist/devtools.js"},"./hooks":{"types":"./hooks/src/index.d.ts","browser":"./hooks/dist/hooks.module.js","umd":"./hooks/dist/hooks.umd.js","import":"./hooks/dist/hooks.mjs","require":"./hooks/dist/hooks.js"},"./test-utils":{"types":"./test-utils/src/index.d.ts","browser":"./test-utils/dist/testUtils.module.js","umd":"./test-utils/dist/testUtils.umd.js","import":"./test-utils/dist/testUtils.mjs","require":"./test-utils/dist/testUtils.js"},"./jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","browser":"./jsx-runtime/dist/jsxRuntime.module.js","umd":"./jsx-runtime/dist/jsxRuntime.umd.js","import":"./jsx-runtime/dist/jsxRuntime.mjs","require":"./jsx-runtime/dist/jsxRuntime.js"},"./compat/client":{"import":"./compat/client.mjs","require":"./compat/client.js"},"./compat/server":{"browser":"./compat/server.browser.js","import":"./compat/server.mjs","require":"./compat/server.js"},"./compat/jsx-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-runtime.mjs","require":"./compat/jsx-runtime.js"},"./compat/jsx-dev-runtime":{"types":"./jsx-runtime/src/index.d.ts","import":"./compat/jsx-dev-runtime.mjs","require":"./compat/jsx-dev-runtime.js"},"./compat/scheduler":{"import":"./compat/scheduler.mjs","require":"./compat/scheduler.js"},"./package.json":"./package.json","./compat/package.json":"./compat/package.json","./debug/package.json":"./debug/package.json","./devtools/package.json":"./devtools/package.json","./hooks/package.json":"./hooks/package.json","./test-utils/package.json":"./test-utils/package.json","./jsx-runtime/package.json":"./jsx-runtime/package.json"},"license":"MIT","funding":{"type":"opencollective","url":"https://opencollective.com/preact"},"types":"src/index.d.ts","scripts":{"prepare":"run-s build && check-export-map","build":"npm-run-all --parallel build:*","build:core":"microbundle build --raw --no-generateTypes -f cjs,esm,umd","build:core-min":"microbundle build --raw --no-generateTypes -f cjs,esm,umd,iife src/cjs.js -o dist/preact.min.js","build:debug":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd debug","build:devtools":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd devtools","build:hooks":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd hooks","build:test-utils":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd test-utils","build:compat":"microbundle build src/index.js src/scheduler.js --raw --no-generateTypes -f cjs,esm,umd --cwd compat --globals 'preact/hooks=preactHooks'","build:jsx":"microbundle build --raw --no-generateTypes -f cjs,esm,umd --cwd jsx-runtime","postbuild":"node ./config/node-13-exports.js && node ./config/compat-entries.js","dev":"microbundle watch --raw --no-generateTypes --format cjs","dev:hooks":"microbundle watch --raw --no-generateTypes --format cjs --cwd hooks","dev:compat":"microbundle watch --raw --no-generateTypes --format cjs --cwd compat --globals 'preact/hooks=preactHooks'","test":"npm-run-all build lint test:unit","test:unit":"run-p test:mocha test:karma:minify test:ts","test:ts":"run-p test:ts:*","test:ts:core":"tsc -p test/ts/ && mocha --require \"@babel/register\" test/ts/**/*-test.js","test:ts:compat":"tsc -p compat/test/ts/","test:mocha":"mocha --recursive --require \"@babel/register\" test/shared test/node","test:mocha:watch":"npm run test:mocha -- --watch","test:karma":"cross-env COVERAGE=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:minify":"cross-env COVERAGE=true MINIFY=true BABEL_NO_MODULES=true karma start karma.conf.js --single-run","test:karma:watch":"cross-env BABEL_NO_MODULES=true karma start karma.conf.js --no-single-run","test:karma:hooks":"cross-env COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=hooks/test/browser/**.js --no-single-run","test:karma:test-utils":"cross-env PERFORMANCE=false COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test-utils/test/shared/**.js --no-single-run","test:karma:bench":"cross-env PERFORMANCE=true COVERAGE=false BABEL_NO_MODULES=true karma start karma.conf.js --grep=test/benchmarks/**.js --single-run","benchmark":"npm run test:karma:bench -- no-single-run","lint":"run-s eslint tsc","tsc":"tsc -p jsconfig-lint.json","eslint":"eslint src test debug compat hooks test-utils","format":"prettier --write \"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}\"","format:check":"prettier --check '**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}'"},"eslintConfig":{"extends":["developit","prettier"],"settings":{"react":{"pragma":"createElement"}},"rules":{"camelcase":[1,{"allow":["__test__*","unstable_*","UNSAFE_*"]}],"no-unused-vars":[2,{"args":"none","varsIgnorePattern":"^h|React$"}],"prefer-rest-params":0,"prefer-spread":0,"no-cond-assign":0,"react/jsx-no-bind":0,"react/no-danger":"off","react/prefer-stateless-function":0,"react/sort-comp":0,"jest/valid-expect":0,"jest/no-disabled-tests":0,"jest/no-test-callback":0,"jest/expect-expect":0,"jest/no-standalone-expect":0,"jest/no-export":0,"react/no-find-dom-node":0}},"eslintIgnore":["test/fixtures","test/ts/","*.ts","dist"],"prettier":{"singleQuote":true,"trailingComma":"none","arrowParens":"avoid"},"lint-staged":{"**/*.{js,jsx,mjs,cjs,ts,tsx,yml,json,html,md,css,scss}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"],"authors":["The Preact Authors (https://github.com/preactjs/preact/contributors)"],"repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"homepage":"https://preactjs.com","devDependencies":{"@actions/github":"^5.0.0","@actions/glob":"^0.2.0","@babel/core":"^7.7.0","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/plugin-transform-react-jsx":"^7.7.0","@babel/plugin-transform-react-jsx-source":"^7.7.4","@babel/preset-env":"^7.7.1","@babel/register":"^7.7.0","@types/chai":"^4.1.2","@types/mocha":"^5.0.0","@types/node":"^14.14.10","babel-plugin-istanbul":"^6.0.0","babel-plugin-transform-async-to-promises":"^0.8.15","babel-plugin-transform-rename-properties":"0.1.0","benchmark":"^2.1.4","chai":"^4.1.2","check-export-map":"^1.3.0","coveralls":"^3.0.0","cross-env":"^7.0.2","diff":"^5.0.0","errorstacks":"^2.4.0","esbuild":"^0.14.50","eslint":"5.15.1","eslint-config-developit":"^1.1.1","eslint-config-prettier":"^6.5.0","eslint-plugin-react":"7.12.4","husky":"^4.3.0","karma":"^6.3.16","karma-chai-sinon":"^0.1.5","karma-chrome-launcher":"^3.1.0","karma-coverage":"^2.1.0","karma-esbuild":"^2.2.4","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sauce-launcher":"^4.3.4","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","kolorist":"^1.2.10","lint-staged":"^10.5.2","lodash":"^4.17.20","microbundle":"^0.15.1","mocha":"^8.2.1","npm-merge-driver-install":"^1.1.1","npm-run-all":"^4.0.0","preact-render-to-string":"^5.2.5","prettier":"^2.8.6","prop-types":"^15.7.2","sade":"^1.7.4","sinon":"^9.2.3","sinon-chai":"^3.5.0","typescript":"^4.9.5","undici":"^4.12.0"},"overrides":{"webdriverio":"7.30.2"},"volta":{"node":"20.9.0"},"_id":"preact@10.19.6","_integrity":"sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==","_resolved":"/Users/jovi/Documents/SideProjects/preact/preact-10.19.6.tgz","_from":"file:preact-10.19.6.tgz","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==","shasum":"66007b67aad4d11899f583df1b0116d94a89b8f5","tarball":"http://localhost:4545/npm/registry/preact/preact-10.19.6.tgz","fileCount":131,"unpackedSize":1370954,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDh1diBOzydVPt9VeQt4EOfIOOPJu7BkY12zPdurgT9zgIgfuNN2AnNgP+o3Vg9jfoa1JFpRCWardIoyTYqKPKUegY="}]},"_npmUser":{"name":"jdecroock","email":"decroockjovi@gmail.com"},"directories":{},"maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/preact_10.19.6_1708594526878_0.7929930943794894"},"_hasShrinkwrap":false}},"readme":"

\n\n\n![Preact](https://raw.githubusercontent.com/preactjs/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true 'Preact')\n\n\n

\n

Fast 3kB alternative to React with the same modern API.

\n\n**All the power of Virtual DOM components, without the overhead:**\n\n- Familiar React API & patterns: ES6 Class, hooks, and Functional Components\n- Extensive React compatibility via a simple [preact/compat] alias\n- Everything you need: JSX, VDOM, [DevTools], HMR, SSR.\n- Highly optimized diff algorithm and seamless hydration from Server Side Rendering\n- Supports all modern browsers and IE11\n- Transparent asynchronous rendering with a pluggable scheduler\n\n### 💁 More information at the [Preact Website ➞](https://preactjs.com)\n\n\n\n\n\n\n\n\n
\n\n[![npm](https://img.shields.io/npm/v/preact.svg)](http://npm.im/preact)\n[![Preact Slack Community](https://img.shields.io/badge/Slack%20Community-preact.slack.com-blue)](https://chat.preactjs.com)\n[![OpenCollective Backers](https://opencollective.com/preact/backers/badge.svg)](#backers)\n[![OpenCollective Sponsors](https://opencollective.com/preact/sponsors/badge.svg)](#sponsors)\n\n[![coveralls](https://img.shields.io/coveralls/preactjs/preact/main.svg)](https://coveralls.io/github/preactjs/preact)\n[![gzip size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=gzip&label=gzip)](https://unpkg.com/preact/dist/preact.min.js)\n[![brotli size](http://img.badgesize.io/https://unpkg.com/preact/dist/preact.min.js?compression=brotli&label=brotli)](https://unpkg.com/preact/dist/preact.min.js)\n\n\n\n\n\n
\n\nYou can find some awesome libraries in the [awesome-preact list](https://github.com/preactjs/awesome-preact) :sunglasses:\n\n---\n\n## Getting Started\n\n> 💁 _**Note:** You [don't need ES2015 to use Preact](https://github.com/developit/preact-in-es3)... but give it a try!_\n\n#### Tutorial: Building UI with Preact\n\nWith Preact, you create user interfaces by assembling trees of components and elements. Components are functions or classes that return a description of what their tree should output. These descriptions are typically written in [JSX](https://facebook.github.io/jsx/) (shown underneath), or [HTM](https://github.com/developit/htm) which leverages standard JavaScript Tagged Templates. Both syntaxes can express trees of elements with \"props\" (similar to HTML attributes) and children.\n\nTo get started using Preact, first look at the render() function. This function accepts a tree description and creates the structure described. Next, it appends this structure to a parent DOM element provided as the second argument. Future calls to render() will reuse the existing tree and update it in-place in the DOM. Internally, render() will calculate the difference from previous outputted structures in an attempt to perform as few DOM operations as possible.\n\n```js\nimport { h, render } from 'preact';\n// Tells babel to use h for JSX. It's better to configure this globally.\n// See https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#usage\n// In tsconfig you can specify this with the jsxFactory\n/** @jsx h */\n\n// create our tree and append it to document.body:\nrender(\n\t
\n\t\t

Hello

\n\t
,\n\tdocument.body\n);\n\n// update the tree in-place:\nrender(\n\t
\n\t\t

Hello World!

\n\t
,\n\tdocument.body\n);\n// ^ this second invocation of render(...) will use a single DOM call to update the text of the

\n```\n\nHooray! render() has taken our structure and output a User Interface! This approach demonstrates a simple case, but would be difficult to use as an application grows in complexity. Each change would be forced to calculate the difference between the current and updated structure for the entire application. Components can help here – by dividing the User Interface into nested Components each can calculate their difference from their mounted point. Here's an example:\n\n```js\nimport { render, h } from 'preact';\nimport { useState } from 'preact/hooks';\n\n/** @jsx h */\n\nconst App = () => {\n\tconst [input, setInput] = useState('');\n\n\treturn (\n\t\t
\n\t\t\t

Do you agree to the statement: \"Preact is awesome\"?

\n\t\t\t setInput(e.target.value)} />\n\t\t
\n\t);\n};\n\nrender(, document.body);\n```\n\n---\n\n## Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/preact#sponsor)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n             \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Backers\n\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/preact#backer)]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n---\n\n## License\n\nMIT\n\n[![Preact](https://i.imgur.com/YqCHvEW.gif)](https://preactjs.com)\n\n[preact/compat]: https://github.com/preactjs/preact/tree/main/compat\n[hyperscript]: https://github.com/dominictarr/hyperscript\n[DevTools]: https://github.com/preactjs/preact-devtools\n","maintainers":[{"name":"rschristian","email":"rchristian@ryanchristian.dev"},{"name":"drewigg","email":"drewigg@gmail.com"},{"name":"reznord","email":"allamsetty.anup@gmail.com"},{"name":"preactjs","email":"hello@preactjs.com"},{"name":"developit","email":"jason@developit.ca"},{"name":"marvinhagemeister","email":"hello@marvinh.dev"},{"name":"jdecroock","email":"decroockjovi@gmail.com"},{"name":"sventschui","email":"sventschui@gmail.com"},{"name":"robertknight","email":"robertknight@gmail.com"}],"time":{"modified":"2024-02-22T09:35:27.693Z","created":"2015-09-11T02:41:33.521Z","1.2.0":"2015-09-11T02:41:33.521Z","1.3.0":"2015-09-14T11:55:43.607Z","1.3.1":"2015-09-14T12:39:27.207Z","1.3.2":"2015-09-15T13:54:28.472Z","1.4.0":"2015-10-01T13:04:37.935Z","1.5.0":"2015-10-16T03:18:49.860Z","1.5.1":"2015-10-18T21:51:58.158Z","1.5.2":"2015-10-31T17:05:00.704Z","2.0.0":"2015-11-13T02:01:42.373Z","2.0.1":"2015-11-17T22:17:00.803Z","2.1.0":"2015-11-18T16:53:08.007Z","2.2.0":"2015-11-24T04:23:19.654Z","2.3.0":"2015-11-29T02:51:58.274Z","2.4.0":"2015-12-03T18:56:53.836Z","2.4.1":"2015-12-03T19:00:51.839Z","2.5.0":"2015-12-03T19:24:20.254Z","2.5.1":"2015-12-16T01:52:27.585Z","2.6.0":"2015-12-18T02:30:39.330Z","2.6.1":"2015-12-18T12:54:25.563Z","2.7.0":"2016-01-07T01:09:04.369Z","2.7.1":"2016-01-07T02:07:50.761Z","2.7.2":"2016-01-07T20:52:50.085Z","2.7.3":"2016-01-18T17:51:47.118Z","2.8.0":"2016-01-29T02:42:35.971Z","2.8.1":"2016-01-29T03:01:39.566Z","2.8.2":"2016-01-29T14:25:41.524Z","3.0.0-beta1":"2016-02-01T02:03:13.779Z","2.8.3":"2016-02-01T13:15:40.231Z","3.0.0-beta2":"2016-02-01T13:30:58.138Z","3.0.0-beta3":"2016-02-02T22:08:20.491Z","3.0.0-beta4":"2016-02-03T04:36:40.125Z","3.0.0":"2016-02-03T15:16:29.774Z","3.0.1":"2016-02-04T02:36:28.567Z","3.0.2":"2016-02-06T05:03:41.657Z","3.1.0":"2016-02-06T21:44:36.996Z","3.2.0":"2016-02-07T04:15:34.310Z","3.3.0":"2016-02-12T23:06:04.621Z","3.4.0":"2016-02-14T18:23:13.286Z","4.0.0":"2016-02-23T13:12:49.223Z","4.0.1":"2016-02-23T23:21:17.172Z","4.1.0":"2016-02-26T02:57:08.466Z","4.1.1":"2016-03-03T00:17:06.015Z","4.1.2":"2016-03-09T16:32:39.863Z","4.1.3":"2016-03-10T00:16:15.334Z","4.2.0":"2016-03-11T02:32:07.422Z","4.3.0":"2016-03-12T20:24:27.115Z","4.3.1":"2016-03-13T16:34:19.231Z","4.3.2":"2016-03-14T01:01:44.674Z","4.4.0":"2016-03-18T02:30:48.284Z","4.5.0":"2016-03-19T16:38:25.367Z","4.5.1":"2016-03-22T19:02:38.063Z","4.6.0":"2016-04-12T02:49:36.831Z","4.6.1":"2016-04-12T13:06:18.106Z","4.6.2":"2016-04-13T13:59:14.708Z","4.6.3":"2016-04-16T19:27:10.377Z","4.7.0":"2016-04-18T13:15:32.639Z","4.7.1":"2016-04-19T04:25:29.473Z","4.7.2":"2016-04-19T04:58:37.680Z","4.8.0":"2016-04-27T13:07:36.312Z","5.0.0-beta1":"2016-05-21T15:54:53.116Z","5.0.0-beta2":"2016-05-24T03:11:08.050Z","5.0.0-beta3":"2016-05-24T12:32:09.361Z","5.0.0-beta4":"2016-05-24T15:23:45.523Z","5.0.0-beta5":"2016-05-26T14:09:07.725Z","5.0.0-beta6":"2016-05-31T12:45:55.448Z","5.0.0-beta7":"2016-06-04T23:41:09.468Z","5.0.0-beta8":"2016-06-06T02:50:50.910Z","5.0.0-beta9":"2016-06-06T03:04:26.866Z","5.0.0-beta10":"2016-06-07T12:39:49.452Z","5.0.0-beta11":"2016-06-09T03:23:49.785Z","5.0.0-beta12":"2016-06-13T15:56:58.301Z","5.0.0-beta.12":"2016-06-13T16:00:14.174Z","5.0.1-beta.12":"2016-06-13T16:02:18.914Z","5.0.1-beta.13":"2016-06-18T17:26:50.831Z","5.0.1-beta.14":"2016-06-18T20:19:42.138Z","5.0.1-beta.15":"2016-06-20T23:50:00.826Z","5.1.0-beta.16":"2016-06-21T12:04:36.462Z","5.1.0-beta.17":"2016-06-21T23:03:51.577Z","5.1.0-beta.18":"2016-06-23T00:39:51.051Z","5.1.0-beta.19":"2016-06-23T16:02:22.959Z","5.1.0-beta.20":"2016-06-28T21:10:24.902Z","5.1.0-beta.21":"2016-06-30T13:29:34.986Z","5.1.0-beta.22":"2016-06-30T17:28:44.419Z","5.1.0-beta.23":"2016-07-07T03:15:13.442Z","5.1.0-beta.24":"2016-07-08T12:02:19.276Z","5.1.0-beta.25":"2016-07-08T12:14:10.734Z","5.1.0-beta.26":"2016-07-08T12:29:22.529Z","5.2.0-beta.0":"2016-07-14T11:27:25.082Z","5.3.0":"2016-07-17T04:52:42.308Z","5.3.1":"2016-07-17T07:59:15.345Z","5.3.2":"2016-07-18T23:17:04.241Z","5.4.0":"2016-07-19T04:35:40.449Z","5.4.1":"2016-07-21T20:01:47.331Z","5.5.0":"2016-07-22T01:21:13.867Z","5.6.0":"2016-07-24T03:16:38.332Z","5.7.0":"2016-08-18T03:41:58.392Z","6.0.0":"2016-08-25T16:21:27.439Z","6.0.1":"2016-09-03T00:43:51.438Z","6.0.2":"2016-09-07T17:09:56.611Z","6.1.0":"2016-09-29T03:30:08.591Z","6.2.0":"2016-10-03T03:49:15.145Z","6.2.1":"2016-10-04T00:32:30.240Z","6.3.0":"2016-10-06T01:05:55.844Z","6.4.0":"2016-10-28T02:39:32.077Z","7.0.0":"2016-11-10T19:33:23.091Z","7.0.1":"2016-11-10T19:44:13.979Z","7.0.2":"2016-11-14T22:30:13.402Z","7.0.3":"2016-11-17T16:27:21.414Z","7.1.0":"2016-12-02T23:00:54.087Z","7.2.0":"2017-01-23T13:39:38.352Z","7.2.1":"2017-03-24T01:00:20.466Z","8.0.0":"2017-04-06T03:15:52.752Z","8.0.1":"2017-04-06T16:40:49.575Z","8.1.0":"2017-04-09T15:42:00.618Z","8.2.0":"2017-07-11T02:24:39.581Z","8.2.1":"2017-07-11T22:36:29.547Z","8.2.2":"2017-08-24T16:44:26.602Z","8.2.3":"2017-08-24T17:37:06.651Z","8.2.4":"2017-08-24T19:08:12.826Z","8.2.5":"2017-08-28T20:55:50.750Z","8.2.6":"2017-10-24T16:20:54.004Z","8.2.7":"2017-12-12T18:18:31.631Z","8.2.8":"2018-04-26T19:51:06.541Z","8.2.9":"2018-04-30T14:39:08.052Z","8.3.0":"2018-08-05T20:36:45.671Z","8.3.1":"2018-08-16T01:35:49.815Z","8.4.0":"2018-12-06T19:19:39.506Z","8.4.1":"2018-12-06T19:55:36.067Z","8.4.2":"2018-12-07T20:51:26.689Z","10.0.0-alpha.0":"2019-03-04T23:43:24.942Z","10.0.0-alpha.1":"2019-03-07T19:54:55.027Z","10.0.0-alpha.2":"2019-03-14T19:21:56.441Z","10.0.0-alpha.3":"2019-04-02T18:42:08.474Z","10.0.0-alpha.4":"2019-04-05T20:16:30.178Z","10.0.0-beta.0":"2019-04-17T17:07:40.084Z","10.0.0-beta.1":"2019-05-02T20:48:54.543Z","10.0.0-beta.2":"2019-05-31T12:11:14.120Z","10.0.0-beta.3":"2019-06-21T19:03:23.955Z","10.0.0-rc.0":"2019-07-11T20:13:33.642Z","8.5.0":"2019-08-02T18:34:23.572Z","10.0.0-rc.1":"2019-08-02T20:34:45.123Z","8.5.1":"2019-08-08T07:48:55.246Z","8.5.2":"2019-08-18T05:51:15.904Z","10.0.0-rc.2":"2019-09-09T19:45:28.570Z","10.0.0-rc.3":"2019-09-10T18:19:37.247Z","10.0.0":"2019-10-01T18:26:18.414Z","10.0.1":"2019-10-17T18:09:23.729Z","10.0.2":"2019-10-28T17:57:16.701Z","10.0.3":"2019-10-29T09:18:45.999Z","10.0.4":"2019-10-29T13:06:46.399Z","8.5.3":"2019-11-01T08:41:49.217Z","10.0.5":"2019-11-10T13:25:36.066Z","10.1.0":"2019-12-09T18:50:36.886Z","10.1.1":"2019-12-16T19:51:39.067Z","10.2.0":"2020-01-07T20:42:55.712Z","10.2.1":"2020-01-08T08:36:04.685Z","10.3.0":"2020-02-03T19:15:49.374Z","10.3.1":"2020-02-06T17:24:50.568Z","10.3.2":"2020-02-15T13:50:17.299Z","10.3.3":"2020-03-01T17:57:56.588Z","10.3.4":"2020-03-11T19:16:12.060Z","10.4.0":"2020-04-08T11:04:58.743Z","10.4.1":"2020-04-20T19:26:16.644Z","10.4.2":"2020-05-18T17:48:44.135Z","10.4.3":"2020-05-18T23:18:23.107Z","10.4.4":"2020-05-18T23:25:44.468Z","10.4.5":"2020-06-30T19:02:40.819Z","10.4.6":"2020-07-14T16:04:09.402Z","10.4.7":"2020-08-05T21:20:18.587Z","10.4.8":"2020-08-26T18:37:19.566Z","10.5.0":"2020-09-23T11:05:57.380Z","10.5.1":"2020-09-23T13:28:42.440Z","10.5.2":"2020-09-23T14:10:51.610Z","10.5.3":"2020-09-28T20:59:48.776Z","10.5.4":"2020-10-05T16:20:46.512Z","10.5.5":"2020-10-18T10:24:46.041Z","10.5.6":"2020-11-12T18:41:42.618Z","10.5.7":"2020-11-12T21:59:22.228Z","10.5.8":"2020-12-30T15:19:16.883Z","10.5.9":"2021-01-03T12:33:26.896Z","10.5.10":"2021-01-14T12:16:51.666Z","10.5.11":"2021-01-20T21:45:27.375Z","10.5.12":"2021-01-26T21:59:23.057Z","10.5.13":"2021-03-14T21:17:27.950Z","10.5.14":"2021-07-01T16:55:57.821Z","10.5.15":"2021-10-12T05:54:49.664Z","10.6.0":"2021-11-23T16:06:22.346Z","10.6.1":"2021-11-25T11:00:52.961Z","10.6.2":"2021-11-29T16:11:35.031Z","10.6.3":"2021-12-08T13:11:29.490Z","10.6.4":"2021-12-09T20:57:46.032Z","10.6.5":"2022-01-27T17:07:07.765Z","10.6.6":"2022-02-14T12:35:43.067Z","11.0.0-experimental.0":"2022-02-20T11:19:13.632Z","11.0.0-experimental.1":"2022-02-20T14:00:49.241Z","10.7.0":"2022-03-29T19:13:24.818Z","10.7.1":"2022-04-05T08:59:46.771Z","10.7.2":"2022-05-06T19:02:40.964Z","10.7.3":"2022-06-01T07:23:55.574Z","10.8.0":"2022-06-14T14:26:07.619Z","10.8.1":"2022-06-16T18:04:40.475Z","10.8.2":"2022-06-22T13:52:39.706Z","10.9.0":"2022-07-06T08:34:08.168Z","10.10.0":"2022-07-13T10:29:35.663Z","10.10.1":"2022-08-05T12:06:14.331Z","10.10.2":"2022-08-10T08:55:13.756Z","10.10.3":"2022-08-16T08:42:56.764Z","10.10.4":"2022-08-18T21:06:27.156Z","10.10.5":"2022-08-19T08:57:19.400Z","10.10.6":"2022-08-19T17:18:02.412Z","10.11.0":"2022-09-12T08:37:37.413Z","10.11.1":"2022-10-04T19:48:09.959Z","10.11.2":"2022-10-15T09:07:00.655Z","10.11.3":"2022-11-14T08:12:50.974Z","10.12.0":"2023-02-06T21:34:34.584Z","10.12.1":"2023-02-09T18:32:40.605Z","10.13.0":"2023-02-24T13:08:39.345Z","10.13.1":"2023-03-09T14:38:25.192Z","10.13.2":"2023-03-27T08:33:37.222Z","10.14.0":"2023-05-14T10:27:37.067Z","10.14.1":"2023-05-16T15:22:16.273Z","10.15.0":"2023-05-21T19:05:11.878Z","10.15.1":"2023-05-27T09:28:33.984Z","10.16.0":"2023-07-09T08:01:55.455Z","10.17.0":"2023-08-14T13:24:00.433Z","10.17.1":"2023-08-19T07:46:40.710Z","10.18.0":"2023-09-28T09:33:11.094Z","10.18.1":"2023-10-01T09:22:19.523Z","10.18.2":"2023-11-03T08:05:15.726Z","10.19.0":"2023-11-11T08:03:27.443Z","10.19.1":"2023-11-11T10:18:09.873Z","10.19.2":"2023-11-14T05:58:38.569Z","10.19.3":"2023-12-08T14:31:39.334Z","10.19.4":"2024-02-08T07:06:58.208Z","10.19.5":"2024-02-16T09:42:54.732Z","10.19.6":"2024-02-22T09:35:27.207Z"},"homepage":"https://preactjs.com","repository":{"type":"git","url":"git+https://github.com/preactjs/preact.git"},"bugs":{"url":"https://github.com/preactjs/preact/issues"},"license":"MIT","readmeFilename":"README.md","users":{"developit":true,"pje":true,"kratyk":true,"rexpan":true,"abhisekp":true,"billneff79":true,"pixel67":true,"shanewholloway":true,"princetoad":true,"charlespeters":true,"gcwelborn":true,"lassevolkmann":true,"erikvold":true,"iamale":true,"xueboren":true,"grahm":true,"d-band":true,"daniellink":true,"youtwo":true,"rethinkflash":true,"kkho595":true,"sangdth":true,"sternelee":true,"tztz":true,"alexparish":true,"petershev":true,"wayn":true,"sshrike":true,"vpzomtrrfrt":true,"severen":true,"mdedirudianto":true,"huiyifyj":true,"karzanosman984":true,"aim97":true,"yang.shao":true,"nberlette":true,"flumpus-dev":true},"keywords":["preact","react","ui","user interface","virtual dom","vdom","components","dom diff","front-end","framework"]} \ No newline at end of file diff --git a/tests/testdata/npm/registry/pretty-format/pretty-format-3.8.0.tgz b/tests/testdata/npm/registry/pretty-format/pretty-format-3.8.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8766b9cce9beeecd7d736c2702d39e1961ee0ff6 GIT binary patch literal 5935 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 RWmUey^8Y7VUjG1~004i+)5ib+ literal 0 HcmV?d00001 diff --git a/tests/testdata/npm/registry/pretty-format/registry.json b/tests/testdata/npm/registry/pretty-format/registry.json new file mode 100644 index 0000000000..0cd3fe36c1 --- /dev/null +++ b/tests/testdata/npm/registry/pretty-format/registry.json @@ -0,0 +1 @@ +{"_id":"pretty-format","_rev":"296-e8fa2d095a202c8e9da1c4af9f503912","name":"pretty-format","description":"Stringify any JavaScript value.","dist-tags":{"latest":"29.7.0","next":"30.0.0-alpha.3"},"versions":{"1.0.0":{"name":"pretty-format","version":"1.0.0","description":"Stringify any JavaScript value.","main":"dist/pretty-format.js","scripts":{"test":"gulp","test-browser":"gulp test-browser","build":"gulp build","coverage":"gulp coverage"},"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"keywords":["boilerplate","es6","node","starter","kit","transpile","6to5","babel"],"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","devDependencies":{"babel":"^4.3.0","babelify":"^5.0.3","browserify":"^8.1.1","chai":"^2.0.0","del":"^1.1.1","esperanto":"^0.6.7","glob":"^4.3.5","gulp":"^3.8.10","gulp-babel":"^4.0.0","gulp-file":"^0.2.0","gulp-filter":"^2.0.0","gulp-istanbul":"^0.6.0","gulp-jscs":"^1.4.0","gulp-jshint":"^1.9.0","gulp-livereload":"^3.4.0","gulp-load-plugins":"^0.8.0","gulp-mocha":"^2.0.0","gulp-notify":"^2.1.0","gulp-plumber":"^0.6.6","gulp-rename":"^1.2.0","gulp-sourcemaps":"^1.3.0","gulp-uglifyjs":"^0.6.0","isparta":"^2.2.0","jshint-stylish":"^1.0.0","mkdirp":"^0.5.0","mocha":"^2.1.0","run-sequence":"^1.0.2","sinon":"^1.12.2","sinon-chai":"^2.7.0","vinyl-source-stream":"^1.0.0"},"babelBoilerplateOptions":{"entryFileName":"pretty-format","exportVarName":"PrettyFormat","mochaGlobals":["stub","spy","expect"]},"dependencies":{"lodash":"^3.4.0"},"gitHead":"f5033177cce46717f1883ca3bfb17a2c39b495a1","_id":"pretty-format@1.0.0","_shasum":"ce2aa8e552a93cb0d20f23c625313a843d657a77","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.10.36","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"dist":{"shasum":"ce2aa8e552a93cb0d20f23c625313a843d657a77","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-1.0.0.tgz","integrity":"sha512-Fbb5NtaGcNZUChaAMMTnWGpPheC1hLVzklHrAj7TJXzOgRRlbW7VaSWP/bwgq0kPw5EhTYBZfxDOTc/4k7XTPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjgrcYQWQLJeKb4GnhiLiFGq+Cc6tptgP67KGzCqg9QAiAxS00CQKPwUeAcJqRYc9CPCKcGEKOvQXwpwpB7phS6aA=="}]},"directories":{}},"1.1.0":{"name":"pretty-format","version":"1.1.0","description":"Stringify any JavaScript value.","main":"dist/pretty-format.js","scripts":{"test":"gulp","test-browser":"gulp test-browser","build":"gulp build","coverage":"gulp coverage"},"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"keywords":["boilerplate","es6","node","starter","kit","transpile","6to5","babel"],"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","devDependencies":{"babel":"^4.3.0","babelify":"^5.0.3","browserify":"^8.1.1","chai":"^2.0.0","del":"^1.1.1","esperanto":"^0.6.7","glob":"^4.3.5","gulp":"^3.8.10","gulp-babel":"^4.0.0","gulp-file":"^0.2.0","gulp-filter":"^2.0.0","gulp-istanbul":"^0.6.0","gulp-jscs":"^1.4.0","gulp-jshint":"^1.9.0","gulp-livereload":"^3.4.0","gulp-load-plugins":"^0.8.0","gulp-mocha":"^2.0.0","gulp-notify":"^2.1.0","gulp-plumber":"^0.6.6","gulp-rename":"^1.2.0","gulp-sourcemaps":"^1.3.0","gulp-uglifyjs":"^0.6.0","isparta":"^2.2.0","jshint-stylish":"^1.0.0","mkdirp":"^0.5.0","mocha":"^2.1.0","run-sequence":"^1.0.2","sinon":"^1.12.2","sinon-chai":"^2.7.0","vinyl-source-stream":"^1.0.0"},"babelBoilerplateOptions":{"entryFileName":"pretty-format","exportVarName":"PrettyFormat","mochaGlobals":["stub","spy","expect"]},"dependencies":{"lodash":"^3.4.0"},"gitHead":"57e24007ae9e526a847e1627ef9119bd983667ae","_id":"pretty-format@1.1.0","_shasum":"dafccca3f9922601c2090b411e312e88fd705262","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.10.36","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"dist":{"shasum":"dafccca3f9922601c2090b411e312e88fd705262","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-1.1.0.tgz","integrity":"sha512-eAyOM4LBil6NhBr8dmGxIumoiwTVS1AqJ8Rx32BePQC60SHPOfGcGhA7ummZFFhGvyrxR6AyL00uuQJOsLPuJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKvcDZjR/wi0hCoX/qc/dj9IDtwnBQFwo65OxAEW5U6AiEA1NYsYJIXR5vfV3MXeQv029XU51ryhZDEDiGUvgQBdm4="}]},"directories":{}},"1.1.1":{"name":"pretty-format","version":"1.1.1","description":"Stringify any JavaScript value.","main":"dist/pretty-format.js","scripts":{"test":"gulp","test-browser":"gulp test-browser","build":"gulp build","coverage":"gulp coverage"},"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"keywords":["boilerplate","es6","node","starter","kit","transpile","6to5","babel"],"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","devDependencies":{"babel":"^4.3.0","babelify":"^5.0.3","browserify":"^8.1.1","chai":"^2.0.0","del":"^1.1.1","esperanto":"^0.6.7","glob":"^4.3.5","gulp":"^3.8.10","gulp-babel":"^4.0.0","gulp-file":"^0.2.0","gulp-filter":"^2.0.0","gulp-istanbul":"^0.6.0","gulp-jscs":"^1.4.0","gulp-jshint":"^1.9.0","gulp-livereload":"^3.4.0","gulp-load-plugins":"^0.8.0","gulp-mocha":"^2.0.0","gulp-notify":"^2.1.0","gulp-plumber":"^0.6.6","gulp-rename":"^1.2.0","gulp-sourcemaps":"^1.3.0","gulp-uglifyjs":"^0.6.0","isparta":"^2.2.0","jshint-stylish":"^1.0.0","mkdirp":"^0.5.0","mocha":"^2.1.0","run-sequence":"^1.0.2","sinon":"^1.12.2","sinon-chai":"^2.7.0","vinyl-source-stream":"^1.0.0"},"babelBoilerplateOptions":{"entryFileName":"pretty-format","exportVarName":"PrettyFormat","mochaGlobals":["stub","spy","expect"]},"dependencies":{"lodash":"^3.4.0"},"gitHead":"1f3cac5be4c339af4297f9b97e48a9e1c8307370","_id":"pretty-format@1.1.1","_shasum":"19235bc0abcb1926ea461c6e2584d9ff49ab126e","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.10.36","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"dist":{"shasum":"19235bc0abcb1926ea461c6e2584d9ff49ab126e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-1.1.1.tgz","integrity":"sha512-qPVasKaENaWoIz60pmcCJoOllUy810BX9ycdN4SfUxUpuRn1tdsAI70+JUFvr1d0ReNtBX6xTjwrWy++vUt/kw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC6/XWEb3hALnISA5e7GjUrQrhieznE5NQkyPpZdqTB7AiA/Y2z3tQkqbRpB+vQwalHnZRzjTMYjWKRcu+xDXro1Fg=="}]},"directories":{}},"1.2.0":{"name":"pretty-format","version":"1.2.0","description":"Stringify any JavaScript value.","main":"dist/pretty-format.js","scripts":{"test":"gulp","test-browser":"gulp test-browser","build":"gulp build","coverage":"gulp coverage"},"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"keywords":["boilerplate","es6","node","starter","kit","transpile","6to5","babel"],"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","devDependencies":{"babel":"^4.3.0","babelify":"^5.0.3","browserify":"^8.1.1","chai":"^2.0.0","del":"^1.1.1","esperanto":"^0.6.7","glob":"^4.3.5","gulp":"^3.8.10","gulp-babel":"^4.0.0","gulp-file":"^0.2.0","gulp-filter":"^2.0.0","gulp-istanbul":"^0.6.0","gulp-jscs":"^1.4.0","gulp-jshint":"^1.9.0","gulp-livereload":"^3.4.0","gulp-load-plugins":"^0.8.0","gulp-mocha":"^2.0.0","gulp-notify":"^2.1.0","gulp-plumber":"^0.6.6","gulp-rename":"^1.2.0","gulp-sourcemaps":"^1.3.0","gulp-uglifyjs":"^0.6.0","isparta":"^2.2.0","jshint-stylish":"^1.0.0","mkdirp":"^0.5.0","mocha":"^2.1.0","run-sequence":"^1.0.2","sinon":"^1.12.2","sinon-chai":"^2.7.0","vinyl-source-stream":"^1.0.0"},"babelBoilerplateOptions":{"entryFileName":"pretty-format","exportVarName":"PrettyFormat","mochaGlobals":["stub","spy","expect"]},"dependencies":{"lodash":"^3.4.0"},"gitHead":"554b33cc08b0048d41db88dc0440974afebce5fa","_id":"pretty-format@1.2.0","_shasum":"69376de6b777da76ed273f7ed5d76289f115cdb9","_from":".","_npmVersion":"2.3.0","_nodeVersion":"0.10.36","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"maintainers":[{"name":"thejameskyle","email":"me@thejameskyle.com"}],"dist":{"shasum":"69376de6b777da76ed273f7ed5d76289f115cdb9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-1.2.0.tgz","integrity":"sha512-tIv8E46HTI7bIYNxLBR/5Fhvko/jewbPgzfGrj2uaBxZB2JddVEMPub8xYyFkIvSHCum8oUpb2weZhFbF08tiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFqkJsKbuDQak+Re6WSyvmi/BTmzOuWOi7ENfMXra8UAiAzjd67Fz5QTbyxksgYOR0tVzwy9CgJuqw0LSyjCU7Iww=="}]},"directories":{}},"2.0.0":{"name":"pretty-format","version":"2.0.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"mocha test.js"},"devDependencies":{"mocha":"^2.1.0"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"37d2b08cf05dba367d026d5921e3e6f4505689de","_id":"pretty-format@2.0.0","_shasum":"040492380331ffffccd75e153dac72dbcc7ec378","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"040492380331ffffccd75e153dac72dbcc7ec378","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-2.0.0.tgz","integrity":"sha512-9U7WVHdNjxWDJ9koTodKfSGPL95riskwk2CejNF9LVd8KdbkVTSh3f7ptUtXVm/SoIp+s5HvYNTGQDOFPKPbyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVBmZtkF16k8KrJDXHx4JfRwd8n4dcGKPwSsYJKwTgCwIgBXXfdLzOncMmwWgyJ8FKfU8EQYUbJaloFPmg6I71Ge8="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-2.0.0.tgz_1464818545698_0.25608914671465755"},"directories":{}},"2.1.0":{"name":"pretty-format","version":"2.1.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"mocha test.js"},"devDependencies":{"mocha":"^2.1.0"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"06b0943f6b43c685c8a3153e372f20d894ca0e69","_id":"pretty-format@2.1.0","_shasum":"476ffab78d55d8c43474b999bfa817e345d117c3","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"476ffab78d55d8c43474b999bfa817e345d117c3","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-2.1.0.tgz","integrity":"sha512-0BhD723cTYeYTWs8U3G45ZxHR7hWTFu1tCPrvg1TF6XW0VT53FDMLKSfbzrCaelpMVPHB+qw4xX/0CtjkdLtSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZWjeMv5bBkDeN+Tp0xGfzrAmPqFhYWBPHN+nEbbUy4AiEA2t9VwPHDUp44h99pcRuc51gI2TlqCtxyyZGDZ4UqoBI="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-2.1.0.tgz_1464825138448_0.10198654420673847"},"directories":{}},"3.0.0":{"name":"pretty-format","version":"3.0.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"mocha test.js"},"devDependencies":{"mocha":"^2.1.0"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"247edd4f36664cd60407a310d4ca835218034cb8","_id":"pretty-format@3.0.0","_shasum":"52db9fe7e9e6393b0387a218ebc085d99fe7d160","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"52db9fe7e9e6393b0387a218ebc085d99fe7d160","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.0.0.tgz","integrity":"sha512-5b0sNAecZBnhIlEv+PJBimhzWLjWnWGus92hGkXhCYJUn3RR4e4ngtvqXSJ21KUcy1gm17tYwoyI0H0oDFgUFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAHPw249aARdnQfOKDqhlv79SVqBB1yFKcESZ7qnb1R4AiAM9Py/i0M46vP/bpcqQmB5OCagWdwh+JTPfiaiqlTB4A=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.0.0.tgz_1465850033484_0.756478788331151"},"directories":{}},"3.1.0":{"name":"pretty-format","version":"3.1.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"mocha test.js"},"devDependencies":{"mocha":"^2.1.0"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"bc0c4d481a51204724019a526c9164eaa48817ed","_id":"pretty-format@3.1.0","_shasum":"1fc982197f0e8da0dae57da0cb65cd03db25f20e","_from":".","_npmVersion":"2.14.9","_nodeVersion":"0.12.9","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"1fc982197f0e8da0dae57da0cb65cd03db25f20e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.1.0.tgz","integrity":"sha512-WEL5jKQPUtNGX/Rl/UyyGB5PAc25ERpdhlXPFFRzfCtpyFlRhd0PxllfbdB7C+JUruRyoAUWAbQQ1a/4wnKUzQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyc+4N6+Whjmtj6XGDMhCZX+Hd3aT9p2hylzYXQfHCVgIgQRZ/DBz19uZUW8pZhIfVGh63K13zrAhXLrnKQULb7K4="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.1.0.tgz_1465878718616_0.28907121275551617"},"directories":{}},"3.2.0":{"name":"pretty-format","version":"3.2.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"mocha test.js test-plugins-ReactTestComponent.js"},"devDependencies":{"mocha":"^2.1.0","react":"15.2.0-rc.1"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"9254efec454215c5c2c1789b0c679c9b8d0b14ec","_id":"pretty-format@3.2.0","_shasum":"30ba2f8ded37451af53d632fee1fe34b660a285f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"30ba2f8ded37451af53d632fee1fe34b660a285f","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.2.0.tgz","integrity":"sha512-TfISWtKWxTnPXNzgkH4mMF4KVxPLkB6gVhyVdshhd1RbFQuMUw7Xt4COPGn2PSWpPyBD+/VL4Xh8tY78dnIQUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBR2+MRpnVqla/w8bdJVYDTOpIUsdAxngcF7s6uqzFlNAiAJvFYYPmWyQx7y6oXlROjz2XdfHTSk0O2ojj66u+07MQ=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.2.0.tgz_1465961024482_0.2189729092642665"},"directories":{}},"3.3.0":{"name":"pretty-format","version":"3.3.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"mocha test.js"},"devDependencies":{"mocha":"^2.1.0","react":"15.2.0-rc.1"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"e39d00679d4e5e43f23d8a7ef29f2d5c844ec46a","_id":"pretty-format@3.3.0","_shasum":"1dd02939d41bc88fa01b0b7e76bb39562f37ba01","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"1dd02939d41bc88fa01b0b7e76bb39562f37ba01","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.3.0.tgz","integrity":"sha512-3cvBaPgOC9GEbswCs5BobNSsIwdE/UqqDtV1F02b+O6cMN5X7JAMsm4f+71R14DoDEh5ACO+sne4mHHXXUeEUg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxxfGSYO/NMRMvxmoqLu+pG7Gm+6ui4wP8CQIgQfVswgIhANh8OD60diCsQmcjaWQBCYX51wE0zTmLc1Hy8Nn6IvRo"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.3.0.tgz_1465972283646_0.32496382878161967"},"directories":{}},"3.3.1":{"name":"pretty-format","version":"3.3.1","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"jest":"^12.1.0","react":"15.2.0-rc.1"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"ede3ded058074a8176512d31891b8999bc9b7ea5","_id":"pretty-format@3.3.1","_shasum":"54c1d4a7e705382017837d51916d8ec6662e4726","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"54c1d4a7e705382017837d51916d8ec6662e4726","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.3.1.tgz","integrity":"sha512-YqiKnNXzmUr/Lg+8aBL5a/yY8qNdAGFinw18yS8DnJa9uCHb92aSxjgYr87itT/GGTT7iDs9oRgk20TGzz8c8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB3ion8RrUYHhSzYrJwq5JyCKh0uhp+S+cYyihLMmyGTAiAOw57MolUyUhtvq3eW0xWaiisRljsZIxQ2JgASW6OZFg=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.3.1.tgz_1466530860016_0.6480775438249111"},"directories":{}},"3.3.2":{"name":"pretty-format","version":"3.3.2","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"jest":"^12.1.0","react":"15.2.0-rc.1"},"dependencies":{"lodash":"^4.13.1"},"gitHead":"457b319dcf7ab6b2455820ffd6896b70d0d5e475","_id":"pretty-format@3.3.2","_shasum":"1643a3030cb27e6c73280d9dc9602dc203daf9bf","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"1643a3030cb27e6c73280d9dc9602dc203daf9bf","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.3.2.tgz","integrity":"sha512-P/desEuA6cNymPfEiCGwkH8jwcZx+0YXXqKSFSBOrm7wxrPmV7zoaXHUryaCqJc9B2BAUhRAHNJU6bHS7KchBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhGda4M1Jz2MR4Wic9dMHdyG0Ek21CVzDil3xHoR6z0wIgPt1NiTAGsqAg9bJGsxv/COiQFuqr5usDNTq4hbcQX2s="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.3.2.tgz_1466630764906_0.5482108551077545"},"directories":{}},"3.4.0":{"name":"pretty-format","version":"3.4.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^12.1.0","left-pad":"^1.1.0","react":"15.2.0-rc.1"},"gitHead":"12988cafd9b8dce7c58cc47491f08fedbafae658","_id":"pretty-format@3.4.0","_shasum":"81f5266888e6d51515c8d6728228cb50bf9730e8","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"81f5266888e6d51515c8d6728228cb50bf9730e8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.4.0.tgz","integrity":"sha512-NKijSMINAvlPlDWj6jlJ9F8SEhMerjf1sEGGdwtK5g0gllfdoyuDYwT/wov3M1s//ESuvu0M+1bT/OmrqAhZww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjjY3jf2dI1k1STRb5/brIXgJTlDXhN+ANsaTtPxVXhgIgetyMegaQ3/UXEijuJkeM2Tf8J4T1iLN+c/PoCAQJ95w="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.4.0.tgz_1467492135459_0.17039876943454146"},"directories":{}},"3.4.1":{"name":"pretty-format","version":"3.4.1","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^12.1.0","left-pad":"^1.1.0","react":"15.2.0-rc.1"},"gitHead":"a8de0a5fc54bd9014f66d7a51c2ec5b63fb4a101","_id":"pretty-format@3.4.1","_shasum":"e0a39a07407c6f8c38b07cbfee2df9907939c7f8","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"e0a39a07407c6f8c38b07cbfee2df9907939c7f8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.4.1.tgz","integrity":"sha512-zfdQG3xpvFY/fROc8nUWjtPT37MMxpK5FZkVGdy45MhQmQSW0afJ5IcIMFimQPzxkZzpyT9LPXnNV0qkkQpoaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEHNxl8AuCDaayHEDGiOmnNw+R4g8Vd8ArNcINnMKczHAiEAhA4cksts64oorf17OJYfrpd0zftG8LFsf07UvZQbOAE="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.4.1.tgz_1467654558509_0.23463946976698935"},"directories":{}},"3.4.2":{"name":"pretty-format","version":"3.4.2","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^12.1.0","left-pad":"^1.1.0","react":"15.2.0-rc.1"},"gitHead":"06b59f7d1d610f85753908dc5b275e76025d668c","_id":"pretty-format@3.4.2","_shasum":"186dbba514433bac3b3b616f8c806a0d5834ab3f","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"186dbba514433bac3b3b616f8c806a0d5834ab3f","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.4.2.tgz","integrity":"sha512-SL8KezQUQi7t43EQ6nzPGOehBf4vcWjwPpRTyPk0my/L+yUHi9dbj9tJquy8n7zOK3+p9mAsYYk8FKkM60LNKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoKOP8VIcXvOMQOlGkzz2l2yskAXJo3DLe0ixgb5AXhAIgfuo8aoWl6Kp5oEB6oqTWdnJt8LOQ5smRy0NK5mDDlIQ="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.4.2.tgz_1467769452652_0.2976850795093924"},"directories":{}},"3.4.3":{"name":"pretty-format","version":"3.4.3","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^12.1.0","left-pad":"^1.1.0","react":"15.2.0-rc.1"},"gitHead":"d1f6f577307decbce99bf256274e4f2920df3725","_id":"pretty-format@3.4.3","_shasum":"1f5be6a5c252099a5920d3093fef60845f2286ab","_from":".","_npmVersion":"3.9.5","_nodeVersion":"6.2.2","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"1f5be6a5c252099a5920d3093fef60845f2286ab","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.4.3.tgz","integrity":"sha512-l8Hp3qtKC6VjIKFTSp9haaGB9I6kdlQAJEFw3Nvj5yFUTZFrx/sPIvA5as8Y8l8jew6F1/3kYjtWYotCwCy8Aw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwI7Jo6IUDOtUNFd8P7d/mGgV41wuJ7LOMqxLP1D5VEAiEA+udlH8FasR+g9SbZMX1AUeGrs/qEyPu15ZUYxEOse+Y="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.4.3.tgz_1467786479000_0.7793948103208095"},"directories":{}},"3.5.0":{"name":"pretty-format","version":"3.5.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^13.2.3","left-pad":"^1.1.0","react":"15.2.0-rc.1"},"gitHead":"38b091e8d1bb50f9ec3435cef6c72bd124859f9c","_id":"pretty-format@3.5.0","_shasum":"1d795f73086faae09df6c40feb1698134df9ba2d","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"1d795f73086faae09df6c40feb1698134df9ba2d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.5.0.tgz","integrity":"sha512-vPPEnSundtSyZIezVYwNHgVmTYCY8qu8RTYCSWIHaDlKSbZ6he/jz5jB11YX56Qz9wkXF2hX4D5VSPa6F2Iz0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGjAOSx7M2ghG4MMBvpjr/D9ky73OG56fwMA/PEsdk7MAiBb18WFlEeCOcPyNH9FN7wTCcR9tq/lLzVUp/IWEYKPdg=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.5.0.tgz_1467966560716_0.14394370932132006"},"directories":{}},"3.5.1":{"name":"pretty-format","version":"3.5.1","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^13.2.3","left-pad":"^1.1.0","react":"15.2.0-rc.1"},"gitHead":"8487a02de74e5747bd0a7e8491ed2eef1ed952f9","_id":"pretty-format@3.5.1","_shasum":"a3f5239a15bed8f56c70d313467616771ca26cc0","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.12.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"a3f5239a15bed8f56c70d313467616771ca26cc0","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.5.1.tgz","integrity":"sha512-aSdpnOlnbxx3uuR8kXdmYpZo30tlzJ4gVgdjGoO1yM+lulXhXZjj109tqjjeXuZi4qbBFHf4sfag6L0QfdtsRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqg2Ww7J9FY8GGcSkCFbQT11i9XaedvkggR0MKd2WEnAiBNzTnT1C9euWxb7xCT28v64HQQxpag5V0iCeWizis1uw=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.5.1.tgz_1470071183130_0.9069960319902748"},"directories":{}},"3.5.2":{"name":"pretty-format","version":"3.5.2","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^14.1.0","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"ee8df7bead23e719db01719ecc23ed8c71ba1ffc","_id":"pretty-format@3.5.2","_shasum":"e97a0285f076a4ed722406522f9116773d169310","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"e97a0285f076a4ed722406522f9116773d169310","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.5.2.tgz","integrity":"sha512-d42+ZgG/12pif/gQ7y+MsFy6fX31LjakhbnNMjLImw+xX9GRos+jdEVxZlADv9RXHI0+DpI16PmiGGK1Yk3ZHg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMfJ/P/O1sZOnmjJ85aQ/dgg9ww1ZEMK1/JBmEnN6YWwIhALomXdYpg1GysF20/MTV/TgOzeLhwabmL62pikHVqF2J"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.5.2.tgz_1470279216845_0.8327156249433756"},"directories":{}},"3.5.3":{"name":"pretty-format","version":"3.5.3","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^14.1.0","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"973e169d9d8f7c78758972c68406e5c7ff891276","_id":"pretty-format@3.5.3","_shasum":"539dfe29335c42f18c233dcca23eebcc1d41f1c8","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.12.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"539dfe29335c42f18c233dcca23eebcc1d41f1c8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.5.3.tgz","integrity":"sha512-N9IiWJjXWmLj8S1wEKfyC469bcNwv+oNthwWS3nSBX4gioXSmBkMgutCyqOnNXUFmjWMsr15pGrSW1yz2KqXMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVTII+5irl/yYhqukzO8DeA9+vr/sfOK4+E1M9ysCRNQIhAMZB7E6CdSGghSHSJs2yHENMrrHGURv+zlKYq1V5cHzh"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.5.3.tgz_1470875030957_0.45410665567032993"},"directories":{}},"3.6.0":{"name":"pretty-format","version":"3.6.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^14.1.0","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"a0c81c42ba2d62e61a5eecbc39c6f5cb475df67d","_id":"pretty-format@3.6.0","_shasum":"c1c06ee737a3281971c89e0f25cc1387ea4d5d80","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.12.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"c1c06ee737a3281971c89e0f25cc1387ea4d5d80","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.6.0.tgz","integrity":"sha512-LTgRqRLH4lcxsX++Us1uLlpEa1k4a6sVVq17wbPjLmTvF8d3iVwQG31wU6ZODrhmttNJ/dqoluhw8D03fPD98g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDufoDtVoAgIT9VnOydC+FHLD1G+Nz2Qf6uO0FYDx/hhgIgPlyJedPBjRBV/LaIcyPou/Akl2xG5Y02fv4JfllioDo="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.6.0.tgz_1471465208714_0.31411029887385666"},"directories":{}},"3.7.0":{"name":"pretty-format","version":"3.7.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"automock":false,"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^14.1.0","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"bc9409fb6d727d42082f2ff87870d7f49723130c","_id":"pretty-format@3.7.0","_shasum":"0bf7f828cafe6e86ffd6c9dd5a707867f35651ab","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"0bf7f828cafe6e86ffd6c9dd5a707867f35651ab","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.7.0.tgz","integrity":"sha512-K/N+l1SnAraamMt4UvxIFuL0A8bVArDV+JNnKHY8h2qsoa3uDriL40hGPQDIPIUiPviQo2GtVld8M3esi4T29w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAV9KeWjvf9iNsN99YINsYTTqNnsTI/aPMw4K+q3TCg9AiA2CIntR0p7AxKakoBj2TxDumok/UsaSzPLfOgHO6w/LQ=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-3.7.0.tgz_1472742965635_0.8393159916158766"},"directories":{}},"3.8.0":{"name":"pretty-format","version":"3.8.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"556f97f5ba896f15bf8e07e191636d31828f63a8","_id":"pretty-format@3.8.0","_shasum":"bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.12.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-3.8.0.tgz","integrity":"sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGKlYEJdj9xJ42shTyj1xLJPtlxl86Orhd+3IFzXGNAHAiB5446kTOhc9tundS9ZoqzhyxjBFpHKD7hFpaCmaVfrAA=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-3.8.0.tgz_1473558204046_0.3871619531419128"},"directories":{}},"4.0.0":{"name":"pretty-format","version":"4.0.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"9b2e2f48d564a67848c72bf42160938867366c18","_id":"pretty-format@4.0.0","_shasum":"eef0236ad1672ee5d6f36629d3e9e2454d01266c","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.12.0","_npmUser":{"name":"thejameskyle","email":"me@thejameskyle.com"},"dist":{"shasum":"eef0236ad1672ee5d6f36629d3e9e2454d01266c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.0.0.tgz","integrity":"sha512-hgRvha+UajBMc/MMCPOh7D0+46O3kQUEC6TSdChecO7ERazehoZlez8XsdNkX6t3LiLay3kpJ4tJExpVmXsDzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASPNb6LcDAgnCRzbcVEjixwiiCWEyhklKqMLUtv1I2SAiAlESHXkcYUWu0FjIHZYzQYqKpi35g4t7xzoeOAwrVjxQ=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-4.0.0.tgz_1473559349051_0.9919021637178957"},"directories":{}},"4.1.0":{"name":"pretty-format","version":"4.1.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"d03f38d418dbe342a0f9f8e8e787b50f3c2317dc","_id":"pretty-format@4.1.0","_shasum":"fcd582438146d039a93a670fc18c72aa71325577","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.6.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"fcd582438146d039a93a670fc18c72aa71325577","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.1.0.tgz","integrity":"sha512-Vs+8J6JUAn1ICdcnzG09YZ0Fi65R/j2GXyUN4a9LFNmGjibwMop1387t7m2RVRdElmlBbeGC/ZTSost1q1mOZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpxWusNI/r2RJlOdApBNWxKOAMtS3ZaLLWrdeHrjE5+AIhAMP6K5JRAXk9ZRtsi7OQaIrPpp4lcaouCdg9yMCXlvt0"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pretty-format-4.1.0.tgz_1474370567756_0.6978352644946426"},"directories":{}},"4.2.0":{"name":"pretty-format","version":"4.2.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"a870fef3ddcfb0fc77b84e391dcbeebfa02e19f5","_id":"pretty-format@4.2.0","_shasum":"6e2adb73eb423cbcc52077705d68c7504332013b","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.6.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"6e2adb73eb423cbcc52077705d68c7504332013b","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.2.0.tgz","integrity":"sha512-fBqevoNLKF85cQqX7a+k8QnJSW+hO8lxo6QgD2oryreurIeJXy2UFryfrmgc21t1Ig/CA6dnEevocZxCCJGzow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGTfjxBRN8oqOXOi2QNYQO0mOBL7lP0OW972iREPGKCyAiEAoiGdHbJtCnhf933uehxHQlo8APNMtoIoJ0OpyzoCCVE="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-4.2.0.tgz_1474431819370_0.05452787992544472"},"directories":{}},"4.2.1":{"name":"pretty-format","version":"4.2.1","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"03fe50978332e63fb6b1107cf86d7744561dd22e","_id":"pretty-format@4.2.1","_shasum":"b1dad18c3be0c8209e64c7791fa67e252d2d3e07","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.6.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"b1dad18c3be0c8209e64c7791fa67e252d2d3e07","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.2.1.tgz","integrity":"sha512-u7Lai66kb3F5ppykiEraKzfmFjWKurvXZXnxM0+pwi3B2jNRJRJittCLfJ7ltsH+UzAqfkT9ONp4LxGiibOqnQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA4MeVdmNQI0PjV58RBn2/13XfwOb2xJfmkRM6Z0Se7BAiEApKlOB5dmrpQ+d4csK7qHRAtWhogBOvMJ5pNSBaYd4v0="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-4.2.1.tgz_1474439807179_0.30846197600476444"},"directories":{}},"4.2.2":{"name":"pretty-format","version":"4.2.2","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"e593df850acd3a8087e3eb5fc46f66e7c93c3426","_id":"pretty-format@4.2.2","_shasum":"f80bf8d98a6f4d20997a51d18bf331f2ad789a64","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"f80bf8d98a6f4d20997a51d18bf331f2ad789a64","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.2.2.tgz","integrity":"sha512-4zJroTK7uvGbsciNLhA2At8wTYHCoOU6WdH4RVnrmHv83WriBitzIoZz6mr715mUAABXLx6ffgw4idJrrt2rEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9fFy2T2GoMjKNjEROFus9DYhZgU/tcECOcKtZqU1H5QIgbheoqxyVBohcmYiGG6tof5XckOa76nnUtAggUXPgZNE="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-4.2.2.tgz_1478041303477_0.29300490533933043"},"directories":{}},"4.2.3":{"name":"pretty-format","version":"4.2.3","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"ef22c76692bae5e111cd7432b3dd694f5c4d0f12","_id":"pretty-format@4.2.3","_shasum":"8894c2ac81419cf801629d8f66320a25380d8b05","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"8894c2ac81419cf801629d8f66320a25380d8b05","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.2.3.tgz","integrity":"sha512-wzxxVhkcBaS/F/rjPp7Z7nT4pOD/p5kUVjHOgnuGdkcDMB3Bf9KgmuqRyRK+kIgzOSYyDbSZQ36BWYyz6UB4gw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1jKQ8FdOFOlBX+Kc2SpG6cljhadkrMVnnbYtrZPvf3QIgPbz8tJkTYAIDClA/IWCySAmGun+C8ykuxKOE5MiGmu0="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-4.2.3.tgz_1478801682352_0.8379785239230841"},"directories":{}},"4.3.0":{"name":"pretty-format","version":"4.3.0","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"8e3c166225d556a49e835db7919a346fd0a0cb11","_id":"pretty-format@4.3.0","_shasum":"67d3de28fd37957ada895b94452ae539396d97c8","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"67d3de28fd37957ada895b94452ae539396d97c8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.3.0.tgz","integrity":"sha512-CxdYyXMI2almPPdSNYo+856TE/SJzGQK6tHQLR0xQ+41mJO/0p4+hJ5QiIWqq8AfPj1xHh8swq7VFUcH9Y/1bw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE3ffx0zk2GGD9pTaayJVXom4rGYxwQ4RgxWSmXyVmN0AiAHJDB1QjO56XOljcOPspErTlge2NkrbLhZrxIC85sAnQ=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-4.3.0.tgz_1479452901694_0.7598880641162395"},"directories":{}},"4.3.1":{"name":"pretty-format","version":"4.3.1","description":"Stringify any JavaScript value.","license":"MIT","main":"index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"keywords":[],"repository":{"type":"git","url":"git+https://github.com/thejameskyle/pretty-format.git"},"bugs":{"url":"https://github.com/thejameskyle/pretty-format/issues"},"homepage":"https://github.com/thejameskle/pretty-format","scripts":{"test":"jest","perf":"node perf/test.js"},"jest":{"testEnvironment":"node","verbose":true},"devDependencies":{"chalk":"^1.1.3","jest":"^15.1.1","left-pad":"^1.1.1","react":"15.3.0"},"gitHead":"49ae3bab31388b5633c3029203e573f59d59f4a1","_id":"pretty-format@4.3.1","_shasum":"530be5c42b3c05b36414a7a2a4337aa80acd0e8d","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"530be5c42b3c05b36414a7a2a4337aa80acd0e8d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-4.3.1.tgz","integrity":"sha512-EhjEW6Rwv9P4KzazNy6PEb1p1EX8gl5cUrTMfZzHDhgFGEYY3F6Xysn9ja/XJ0g6UcEOHxA7Mya+McxiPXJK7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEMTgw71z5OlL3irKEQ7EsEF90MJBjwcO+uQxCe48OiUAiEA7dq3qdbqcvDjXXf5ZTQJWnp4nEjcBKLrhwYWBYvrGRM="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-4.3.1.tgz_1479479968899_0.5202373208012432"},"directories":{}},"18.0.0":{"name":"pretty-format","version":"18.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"scripts":{"test":"../../packages/jest-cli/bin/jest.js","perf":"node perf/test.js"},"dependencies":{"ansi-styles":"^2.2.1"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@18.0.0","_shasum":"5f45c59fe2ed6749d46765429679670b08b21137","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.2.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"5f45c59fe2ed6749d46765429679670b08b21137","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-18.0.0.tgz","integrity":"sha512-atqBu848DmoUOzei2pHfDMdDH/eu3CQEK0OgRGgXH9JVZtOwLmkJAIzX2U9SELluav3T4NooNbpCFIPXs+HZmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSO41Qa97RpR1aZM1Lb3xWtDODIj0hOSEY+BqIHYu/VAiAfGqY17Wl7/y84BR+Y//bRNWUA/S7zaeSgPnl3iMihNQ=="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-18.0.0.tgz_1481801077732_0.5574890447314829"},"directories":{}},"18.1.0":{"name":"pretty-format","version":"18.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"scripts":{"test":"../../packages/jest-cli/bin/jest.js","perf":"node perf/test.js"},"dependencies":{"ansi-styles":"^2.2.1"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@18.1.0","_shasum":"fb65a86f7a7f9194963eee91865c1bcf1039e284","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.3.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"fb65a86f7a7f9194963eee91865c1bcf1039e284","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-18.1.0.tgz","integrity":"sha512-jlKL5u/PZajHEwJyYiTUwZ3P+zUTp7XylRdIxX5zchNpMJT0Z3lR/+I6g6e8JY8EY7Qk8iSj0BdUZTRXQtixYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0EMAqiO6LgPxiylGgXxW9Kc8HZw2+SJ7OgVkuyCQ0ogIgBCg2QyrcYwEylXAes75DevfTsSCRs5hpatOEwmh6IOk="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-18.1.0.tgz_1482976055665_0.7535617861431092"},"directories":{}},"18.5.0-alpha.7da3df39":{"name":"pretty-format","version":"18.5.0-alpha.7da3df39","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@18.5.0-alpha.7da3df39","scripts":{},"_shasum":"e990895d97195b0ff0cbd7d1dd8d8e179be43ce3","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"e990895d97195b0ff0cbd7d1dd8d8e179be43ce3","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-18.5.0-alpha.7da3df39.tgz","integrity":"sha512-eY4nOgDPVpShr0voqP/kic4j4MRQoc0OWOZ3Y/Ht0NM29U6PZMlLQl+XY2DLfmuA8wa8+wtdNUss4Oq0ue9GKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEqfb1/Vp6kVRD+M9nn999Ztv0u9pHNBhfAdjcdPxFcgIhAN07nTo78Xc0U31Hjgew/g9geeBlszCMb14pPGhLUbgH"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-18.5.0-alpha.7da3df39.tgz_1487350677326_0.2225903368089348"},"directories":{}},"19.0.0":{"name":"pretty-format","version":"19.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@19.0.0","scripts":{},"_shasum":"56530d32acb98a3fa4851c4e2b9d37b420684c84","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.5.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"56530d32acb98a3fa4851c4e2b9d37b420684c84","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-19.0.0.tgz","integrity":"sha512-fXZv+l48/Th+F2lULKbvQiWlYH/PTPb8N337YkyAxLxeeHrCgvf5bOaSXvNBeG5qyEqP01ICYYGApKoiFYrY5A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWRUwBxAzGIcn5tc3VFPtDZu7ca071gAa55Ryh2+/8+AIgdTTp9+A+FqnJ3x6lXAm51JFmP+zALLXzYjOlXuIaai0="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"thejameskyle","email":"me@thejameskyle.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-19.0.0.tgz_1487669430940_0.7767606938723475"},"directories":{}},"19.1.0-alpha.eed82034":{"name":"pretty-format","version":"19.1.0-alpha.eed82034","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@19.1.0-alpha.eed82034","scripts":{},"_shasum":"970654771b23bb904f7362f814c38c95e339cd1d","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.2","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"970654771b23bb904f7362f814c38c95e339cd1d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-19.1.0-alpha.eed82034.tgz","integrity":"sha512-7X3AdZ7UyFAyntFah9buA5XJPUZpI1yCGx+GSXRAUrELBDk2DAV7TwD1gEPsMSqI7u1DmvVbIvowZjPXhNyiKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMOtMlsYlls83jT9vaC2ZCgcnCeOHEifkvDoXfnoca9wIgfRUv0m14NoIL48xE1xvK/kj2j5fpcoU6+NpA+KuTLl8="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-19.1.0-alpha.eed82034.tgz_1489711281837_0.8856345196254551"},"directories":{}},"19.2.0-alpha.993e64af":{"name":"pretty-format","version":"19.2.0-alpha.993e64af","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@19.2.0-alpha.993e64af","scripts":{},"_shasum":"e15683e06787f4656ccc5e6f850928a9dcd9e032","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"e15683e06787f4656ccc5e6f850928a9dcd9e032","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-19.2.0-alpha.993e64af.tgz","integrity":"sha512-qt5ewdvAS4A4iMdVGps6h90tFCmN3ozCmNFITEGryOedd095tJ8+oQFxadoxf+uEcD7Ngs/IGog/DIwUBNZdog==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVW5Rj8TO2LMCEcmLTHXKkidNC+05ksbY9qM6PXAdHHAIhAOOmxoX/maCNwdvkKPGIL8VLRK6vdvnFOEE6mj0l36ip"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-19.2.0-alpha.993e64af.tgz_1493912259929_0.5100777607876807"},"directories":{}},"19.3.0-alpha.85402254":{"name":"pretty-format","version":"19.3.0-alpha.85402254","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@19.3.0-alpha.85402254","scripts":{},"_shasum":"e0cdbd5b0bd06242dc2c00434bed3f9124e6f108","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"e0cdbd5b0bd06242dc2c00434bed3f9124e6f108","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-19.3.0-alpha.85402254.tgz","integrity":"sha512-huDHBGPAc/shsLAgzvp+5eT4k+2fyd+14wPz3I4httz5XZrgLO0OTnWwgToXQCUinbpZj+lO4wZ0sVy3T6x64g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0zjTGu9MKRW35qDccG7v5y/EMquK8VvvnSxYQYjY/ogIhALRwcx2cevUosC5A5jvqeqAJx04Nl3t6p/hcRBL729qO"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-19.3.0-alpha.85402254.tgz_1493984901988_0.14289735327474773"},"directories":{}},"20.0.0":{"name":"pretty-format","version":"20.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.0.0","scripts":{},"_shasum":"bd100f330e707e4f49fef3f234d6e915242a6e7e","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"bd100f330e707e4f49fef3f234d6e915242a6e7e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.0.0.tgz","integrity":"sha512-Qvfdr+IeCrzU4uJOqASMb4KIgQpCklysmn96Ky03terXePbsNYXhDo6qIDF5WD/j20OlS4qnOCSDaGhiPpj6mQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBEUvfz1RRIvWDF/BXeemyoakmgVhsJDHFQLJfYJuJSbAiEAthLp8RdojKdSm3XZCfrxN0XCWUszWMGpbXQjR3vXWgM="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-20.0.0.tgz_1494073956310_0.3826066949404776"},"directories":{}},"20.0.1":{"name":"pretty-format","version":"20.0.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^2.1.1","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.0.1","scripts":{},"_shasum":"ba95329771907c189643dd251e244061ff642350","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"ba95329771907c189643dd251e244061ff642350","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.0.1.tgz","integrity":"sha512-lPi5AF+Izi3iq2BFH8rnviJjMfyC9Cyu4AuU3u++lIQxvcLv4bZ9plFh75I90jM71Aghg4c3rfyFGcS2m+KRHg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFnj7hCGaXUbe+YasN4lgJeT8WvQctuppw62urPUu/EaAiEAvthRiJyictIIE/h1zoLlqiVn24c6osFTVq8arF6ll7A="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-20.0.1.tgz_1494499807965_0.6633350073825568"},"directories":{}},"20.0.2":{"name":"pretty-format","version":"20.0.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^2.1.1","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.0.2","scripts":{},"_shasum":"91831cb1d8fbedb783b58a1e3fcdf88c1bd7cfd1","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"91831cb1d8fbedb783b58a1e3fcdf88c1bd7cfd1","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.0.2.tgz","integrity":"sha512-pT8UwsVd0C6vEOtPGOz1d8YqHO8iqFVFWLrfhcD/NJiovA2uJzgordYzPWBVVgZho5xncRgJJQYLpHHLnhziUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7Mo6jD4FnNyz/MVZyGf9BomiV7WCZsC+LxJFN6M0cGgIhAKKA8U1f8ESRqWkEjbGJewr2X2Kpkb9xUaz+i4fZjc3B"}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pretty-format-20.0.2.tgz_1495018221751_0.7365539520978928"},"directories":{}},"20.0.3":{"name":"pretty-format","version":"20.0.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^2.1.1","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.0.3","scripts":{},"_shasum":"020e350a560a1fe1a98dc3beb6ccffb386de8b14","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"shasum":"020e350a560a1fe1a98dc3beb6ccffb386de8b14","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.0.3.tgz","integrity":"sha512-dSW/15bmtC3vuheyzWUveowskTAUAWKE08+x06rgYzvSoDzg6cVg/MPKgNvh87jRJvOQ/qaQZLLWml2jrukk6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPp5A8OE9xVpmTevt2V8njfmay+B1qL75MoJ524I2wGgIgDXAfxnBRZ0llRihCGp8g+jJKeGp7rsmrkCrifDG9f2s="}]},"maintainers":[{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"dmitriiabramov","email":"dmitrii@rheia.us"},{"name":"fb","email":"opensource+npm@fb.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pretty-format-20.0.3.tgz_1495018631891_0.5346766302827746"},"directories":{}},"20.1.0-alpha.1":{"name":"pretty-format","version":"20.1.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^2.1.1","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-alpha.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-Esjgh3MaR0OUFG+rbIjRabqpuUoS/cERoZcOiXdaemjhiaUfjahtXq0IPNNsUuD6A2n4RB51EBnWMcJnJ1oOnw==","shasum":"51092a6e850b27d0f9e94b03ad71350145dda215","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-alpha.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqcb+ZiWMtNW9a4PTXgLIGEZSuXhDyNPlliHbMNLekIAiAk1wsarxHea7UGSvbTjJmg/n6QvYDp9CZfljWQ6kracQ=="}]},"maintainers":[{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-alpha.1.tgz_1498644980434_0.827074789442122"},"directories":{}},"20.1.0-alpha.2":{"name":"pretty-format","version":"20.1.0-alpha.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^2.1.1","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-alpha.2","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-E8LQAfbHl2M3r06bu0+iGfo0BRFSDObmYAnoadCqJ1D6D/gZzAnGBTog897TkvmkMx9/mOzqA3paOjKTju+xEQ==","shasum":"f6c08b56fee1d84936a18fea2edd1e1a03faaa5a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-alpha.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO4l9ixMwaHBkfJ0y3QS2a58XLrxUIbOEe5V6lJIF3jwIhAN4tUEp6mYFtbBjavEVlRkseh44ok028WQK44tctHmto"}]},"maintainers":[{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-alpha.2.tgz_1498754206978_0.7984285997226834"},"directories":{}},"20.1.0-alpha.3":{"name":"pretty-format","version":"20.1.0-alpha.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^2.1.1","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-alpha.3","_npmVersion":"5.0.3","_nodeVersion":"8.1.2","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-cNkYnwAvdpzPhU6eR3xxM3x/5WX0xy1w99Zv9KlZYsC0zzkFnghm3C2Y+SdfH2i2hHKmJyuXjL36IFwfkEP08g==","shasum":"ea1dd3874bc638c5d6237528ca2f6a087923257d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-alpha.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC8K5vlr3UxT+uio5hIiyD0Y2I6/kFUnfJClPPWnTd57AiEAiRbwldwQc+qxbRpWZOjZUJ+1b0oECLYRCpzx9LhgiXI="}]},"maintainers":[{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-alpha.3.tgz_1498832453553_0.9796057401690632"},"directories":{}},"20.1.0-beta.1":{"name":"pretty-format","version":"20.1.0-beta.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-beta.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-TQcPA1tPty01GSzrumH0v/+DWHlhn3wHkvQgArec1UWmEhsBDpzr2Tw6DVZ5LQ2Zdm1+vqh3vwn/mZ+HJL2dFQ==","shasum":"4c8dbd96fde7b61b965e311af142a60235ecf72a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-beta.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv1Ww3o61Z/CvYWCOFCmtYE2N6uvyLOg95Oc2TUeDQwAIgQbJMzQNTj6kbWdZJDa0i7rJnKQTega0VMBYJ0mUzX9Q="}]},"maintainers":[{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-beta.1.tgz_1499942021825_0.3699762055184692"},"directories":{}},"20.1.0-chi.1":{"name":"pretty-format","version":"20.1.0-chi.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-chi.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-HX/SOY4KwKk78KrCs9oTpEmcZDf6BnDoTwM4fG2kQSfKhUB0G9dP2p/WdLxbjye8DvXU2oR9d1la+d1eKdRmiA==","shasum":"36439fb4ca2bb68e76a0d965170a354e7b2bfc99","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-chi.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0ip/MHsA1IAlSHnT/85GWDFgUTpKakaFVpS1edQ+8oAiAoSkJ1z976f4gCTcu5sWBtPaK24lpd7G2/GULYI40WuA=="}]},"maintainers":[{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-chi.1.tgz_1500027904420_0.6980449620168656"},"directories":{}},"20.1.0-delta.1":{"name":"pretty-format","version":"20.1.0-delta.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-delta.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-1iTpD1bzISgDgyQy9vVUsCQE9yceKEDyBNetu+lnq7L/ciQoAJY4XYNO8rh0nQoRBHyQdmaF9behAYN39dxzpA==","shasum":"f1d31d80b5bd8724b33f3065acb1457710213d0d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-delta.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIiI7KGb081HdOY6i0t99QuePZ8OirftfZGXN4I86yeAiBIPe+haMV2Ws5u/xJ54+h9nM6wGCr5IbBh9hfBA+r7fw=="}]},"maintainers":[{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-delta.1.tgz_1500367613994_0.9472515909001231"},"directories":{}},"20.1.0-delta.2":{"name":"pretty-format","version":"20.1.0-delta.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-delta.2","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-DUKhIiDpLFWl8a88CXjIad2hpz8GWQ/ifF4werLE30QETdOa0Y9DyJYjwO3nlRbcwBhWy2r3fqLczDr8vdZgRg==","shasum":"b30fb1f421158115db5c2561aee3e0932058b4cf","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-delta.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHuXtOW/XxrgNNkp8B0RKEo0zQX7n5YPAkGoRt6u1t1gIgWTzCb87MzXzT7PsoMI92kQz3esnvPaSfPQLm82u98pI="}]},"maintainers":[{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-delta.2.tgz_1500469003591_0.6975763365626335"},"directories":{}},"20.1.0-delta.3":{"name":"pretty-format","version":"20.1.0-delta.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-delta.3","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-oPg69E6gYphXZtbP3MUWF8AdBVxgRpay7+aZuXSd4wfktTY0eAbTA+KxS6aWb2vzLJZjoFzIZn3yoSkb+xoOew==","shasum":"1f84f5ba81dc2d9670aa629e87369650da3bdf62","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-delta.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpiTrCyQWFyysfGQwWB4emqM5cCXIPE0+eDnsyaabl+wIgKkjfrIep4BgdOmQJ6VE/sxs9QyXgFDBGxMZYSrX6ui0="}]},"maintainers":[{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-delta.3.tgz_1501020745661_0.15517720603384078"},"directories":{}},"20.1.0-delta.4":{"name":"pretty-format","version":"20.1.0-delta.4","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-delta.4","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-kIYNcMwJ1O2vX04ojQOQ/w3YcJLDqkUmGnxZUwulYTlDq2lYVqPobc3+Mvaj8T/eNIklhQM6hwcHcawOdE89iA==","shasum":"4867b8e91e1eb7a97b2b02bd46bf9829f6fe1c89","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-delta.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZS4s8mHl92Wk2Fn1i1kL5GJcG1g5fs857DkBpX99gVAIhAKlco26kF4EQL3U47DnA84+kVSFYI6cXHa4KxxNGOrPm"}]},"maintainers":[{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-delta.4.tgz_1501175948595_0.7395031834021211"},"directories":{}},"20.1.0-delta.5":{"name":"pretty-format","version":"20.1.0-delta.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-delta.5","_npmVersion":"5.3.0","_nodeVersion":"8.0.0","_npmUser":{"name":"aaronabramov","email":"aaron@abramov.io"},"dist":{"integrity":"sha512-aIFTNcOiazeXsqjPB534cDBM8unE4veDalZ2dS7BOxHpFVmz4vz1uIKZqO/Yo4bDcZelfk4aa22mTyuApX8R4w==","shasum":"7a45a00938192cb306606b04c84a885a1501e0ff","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-delta.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6glTzrDAIP7CA13IiMwtpZgGkF31fznV35Ge8xfhTOAiEAyQJ/hXMHVr1UqXOkLzVXmDETvqT1nnz1ma502Z/gaFo="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-delta.5.tgz_1501605216720_0.6961817897390574"},"directories":{}},"20.1.0-echo.1":{"name":"pretty-format","version":"20.1.0-echo.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@20.1.0-echo.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-0xv3lhkXb7xtQmha53cSrjl4MVd6Ymj0QJrWWcoK2JEnvSHTYMCLOdzkDi2rXw7Ex+p0DqeBEzM1+ZDksdYItA==","shasum":"3b97907461d90a06b2e7531185cb1b529eb186f3","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-20.1.0-echo.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8/HtkDNG1yARGb/89D7m9WoBkd8CEk29WTtY57+g9YgIhAJJsErxYRqPQy9j1t75v4g6e8UZo3lBWC3cIIDCFZzp8"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-20.1.0-echo.1.tgz_1502210993548_0.23874914622865617"},"directories":{}},"21.0.0-alpha.1":{"name":"pretty-format","version":"21.0.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.0.0-alpha.1","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-Fv3tbErGJ3XxYAVM5OnhGirsOvugIKJ8TYSjyJPT4B8epkenbJkweWHUClT5VRReJ6n5gPzNpi+lZHzPlrab/w==","shasum":"ce06c788260803f557e569d0e2a526510375df34","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.0.0-alpha.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDl/BpS73JeB77g/5/CYDTyXep87QrkTfmsO5khlLlLtAiBQE4O41Aghzjt3OaOU/dckp2XSDYtH17dC+0GfdWkPvg=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.0.0-alpha.1.tgz_1502446445030_0.3482506617438048"},"directories":{}},"21.0.0-alpha.2":{"name":"pretty-format","version":"21.0.0-alpha.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.0.0-alpha.2","_npmVersion":"5.3.0","_nodeVersion":"8.0.0","_npmUser":{"name":"aaronabramov","email":"aaron@abramov.io"},"dist":{"integrity":"sha512-7gc3fKT7HLAyoRleN4VOgqsLwArExCZ8DaiXkWK5xkX40nTZ9icZGduKDNuGMNlTva7rKuz0qqA2sxBtTvq8aQ==","shasum":"0122a9d5f73b9895ee9ba5954aeb817fb988f9c3","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.0.0-alpha.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIET4nsUnAAgFHSGqPOmBnMQiekTux2Oz/F58AsLs/gBlAiBM2cus1jKjwaS6JlolubhWsZJpOd2Ki3L7RAvYg3nZ3w=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.0.0-alpha.2.tgz_1503353208575_0.771268846001476"},"directories":{}},"21.0.0-beta.1":{"name":"pretty-format","version":"21.0.0-beta.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.0.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.0.0-beta.1","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-EVmydIhn2zDLhoCPKU5cCvKHBRp+gxHsWrt4U0YLv8vLGk97/TOv1bvV7oHlo3d7KI6gMgf3Czhusm8M5DGFhQ==","shasum":"53fb4572e1ab46b44cad62fd91863f4cd9d40225","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.0.0-beta.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8p3k48YvZswB+jputDHhYYyB/aryeePsOmTMtH6oA2AIgG7cLKf0RgStumlZ7LsTrfFFu9s10w5k+slc+m6ATh6E="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.0.0-beta.1.tgz_1503610009937_0.9285495886579156"},"directories":{}},"21.0.0":{"name":"pretty-format","version":"21.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.0.0","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-xICDS0AgbFdP8RNDxi58hOWfm7CDjC88PPx49PA8GmBs6WBwWEMLRT6lU0mtX9snTBBMncQxDNs4rMloCjZwuA==","shasum":"bea1522c4c47e49b44db5b6fbf83e7737251f305","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+vVDw72/2w31ygbflJlfproW7shZ47hENNjymgJNBXAiBkFs+9GBUzBFIMtyGEql52VhNx+pK2iREFbuxOBLkemQ=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.0.0.tgz_1504537314379_0.43319351389072835"},"directories":{}},"21.0.2":{"name":"pretty-format","version":"21.0.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.0.2","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-+fjqIZo/KcMEreY5onowgXzENgd6zKxJS9BoiIoOeRmXTM0Fo6Er0RUbIjzLyY2TBV1K2S7vDUzOVcUtKE9jgQ==","shasum":"76adcebd836c41ccd2e6b626e70f63050d2a3534","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsqUcyTXf1SZ2nk2DHem4NmvQgfKnuqytWx9HFzjN8fAiEArFxN3gltU2ql/JE+52XXS5lwwGloQ7JEFPZtdy4Q9yg="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.0.2.tgz_1504880367068_0.5469620125368237"},"directories":{}},"21.1.0":{"name":"pretty-format","version":"21.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"BSD-3-Clause","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.1.0","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-041BVxr2pp7uGG8slfw43ysRXSaBIVqo5Li03BwI3K1/9oENlhkEEYWPkHpDzj7NlJ3GZte+Tv/DId5g2PLduA==","shasum":"557428254323832ee8b7c971cb613442bea67f61","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6QTGj0K+1UUzRwqmZfAPAXqE1noIVPyWEwUI1Gk2mWwIgKwE4ZOOVtnN9tqdSRdHiH9FHxUFcoc46EEwX14if2Uw="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.1.0.tgz_1505353814511_0.45887886406853795"},"directories":{}},"21.2.0":{"name":"pretty-format","version":"21.2.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.2.0","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-r0Ec8aBODhkhwpbw83uQ3dh5l982BRjwDDT2bsY3s9nfeaFvWlOh/hWg81Z4qJX1OwkJBmZqw2Mhk8sWXarx6A==","shasum":"8ca29556ad13eed5db48a3096b98bab9c321c6fa","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjY0pO+SQfBe/IgKVPwNRlnR5xHTIB9vtPe5mUxThkdAIhAOoO/v4U6/w7uFqDLGSZRHl9PtkorbWCzAlXVPeDcaG5"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.2.0.tgz_1506457337974_0.018551710061728954"},"directories":{}},"21.2.1":{"name":"pretty-format","version":"21.2.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.2.1","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==","shasum":"ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBgtAgRmVEXKanMHLVVgRkUCyPZYxJWZvNkWlblPZouAIhAPGavGH8/Jn7gQPD24djHBLKkwX0lB7hsnvnUPpvkCbI"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.2.1.tgz_1506550502084_0.2247674383688718"},"directories":{}},"21.3.0-alpha.1e3ee68e":{"name":"pretty-format","version":"21.3.0-alpha.1e3ee68e","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-alpha.1e3ee68e","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-Yy//p7NR7KKeVzoPEqx6hgQAK9cvLRuWSHHcq+va1fapfgN0EvrU8+Bh6kOIxOtbf8pM9/sP0sh9sDmCSwM25w==","shasum":"a3bad57fa8925ca2e7b5fe66454ac3d30371a314","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-alpha.1e3ee68e.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdteH2WdXDaYFoTvseKDKg6qmE18F2lI5mHGTItGffBAiEAp9K3vnX3vgH3oVBB/KoiPRgpdyJRCciajnLH8a9KYAU="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-alpha.1e3ee68e.tgz_1506608440405_0.08250383823178709"},"directories":{}},"21.3.0-alpha.eff7a1cf":{"name":"pretty-format","version":"21.3.0-alpha.eff7a1cf","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-alpha.eff7a1cf","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-t5+JnrK2LQGOKoZCtDajQzz1XNsc1ZZ1clOWqfg75RXZ7JAIwEP8OxJa/YqyWcatJ0tpLQdk9Pso+fyDsQMabQ==","shasum":"c8d2648ce88753abcdfaa407b555b853db796068","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-alpha.eff7a1cf.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiDAttkNIWk5mfQZkxF4puN/rmJZyVO3GeCgu0lLB49AIgI214FkRHkUl3EaKmTixiGczg4w1zpWjJ4uHd3xaMXFg="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-alpha.eff7a1cf.tgz_1506876408988_0.26944437134079635"},"directories":{}},"21.3.0-beta.1":{"name":"pretty-format","version":"21.3.0-beta.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.1","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-hhGC6GaSgmXvb/WR1HUOsVOx3zZbPlwjiJ73OoIQZeMSiMoJvigr4QbyWX4WasRw2kJuMmdzSsTl573Fsa5Mog==","shasum":"0525f192e6722eae942a9ecb93eab7ef4faa2440","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3vJZSnhgLFWfeghlW/+VaWD7L//Iex6JrpAj+8deMwQIhAJQhiMQNF64rCOPTmmgZ3QK8uyniMjwVNmmPBnf/Mt+x"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.1.tgz_1507114118268_0.1342497942969203"},"directories":{}},"21.3.0-beta.2":{"name":"pretty-format","version":"21.3.0-beta.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.2","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-U4RrCjvNm+u2VV+3xxeLAORBtXo1yUqccfkclKgU05sT6djh/L2B+Xz2WwXgqp1W5LcKawdrVav5InovYwnATQ==","shasum":"781840c8d10bc37c4438c61ab50678917a9f8a7d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKYJbaQ8zMamkJ01z2QVYfm4zTTiJUrR69/edMna39fAiADDzQpEHlV79oVb2RsS3N2L2NX5es7gnrToAr9tPBeNA=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.2.tgz_1507888445329_0.3785671025980264"},"directories":{}},"21.3.0-beta.3":{"name":"pretty-format","version":"21.3.0-beta.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.3","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-GWHJ+1T4WGd0n07XtnAPBX9cJrDe4lDwApFERWbgmJEBZLqOAb2aRMRCWw3lx0YJ4rJUTJQspzykUi17bXMvrw==","shasum":"f52e763ef855a5e0b093fc4af201592e896512f9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrG6BeEH1YaWf3bvraX8xswtKMbw8AOgoL8RNIBTBdawIgTjLUG4DTD7CJK5/vj3AqPLKGTnpKLvK/YAWPH2ngL7o="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.3.tgz_1508960044838_0.6422023139894009"},"directories":{}},"21.3.0-beta.4":{"name":"pretty-format","version":"21.3.0-beta.4","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.4","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-0N/mF0q7xrvqYiVH70Jx6gs6PSd7wgEFwXvZeNfJCZvNqanI0ziubX4b29ZxqLD7EDYWInhrFIVPy+PS7BeP5Q==","shasum":"6b3b8aba0b7097f821156e5fd1e3bc0fa923b17f","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRg+Q+GB25sJKcbPupx2UE4VYZrv++VxX8/XIfX/6cjAiAakJ0Q9WfD1kwAfHtlixZn9gJWWBJZ6ic79B78Yh41xg=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.4.tgz_1509024417918_0.15134358499199152"},"directories":{}},"21.3.0-beta.5":{"name":"pretty-format","version":"21.3.0-beta.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.5","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-RJsSz0OezKVzE11v6XawL4bKSf/Ot8/emu2MniJCmVXyGZ/qAecQ9YjtY8IqMJkLN/GBvDb+4cZvwdwaLrcGSA==","shasum":"7293f1b7cd5af9e4d451d3fce2d9edf37be1225a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXAdrVmPy9pM8T7RV0pGsKIcxahSV0PKOHWLWTOhSi4AIgIyzDQpn/kWMS2pR+riisVtpB47NVgMuZmHhc5tix50g="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.5.tgz_1509628650932_0.5733425945509225"},"directories":{}},"21.3.0-beta.6":{"name":"pretty-format","version":"21.3.0-beta.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.6","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-Izb3jeV4i6KVY0B5ioD1raEI4KLGO0IMJZuAk6LGNU+Y2Nih5L5Fyj034uajMG4HIYXUMwjZPjlGbhJdkQA0+Q==","shasum":"9e7124609ce93e236214032f812d01fd87dffdac","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGESh4yB8vAoBfFCIDFbv+bo25Qp4Dtw2uepcGh3dK4JAiB9Ce2GWkLtl6cR2a88SJUi6weIkLVvMOIUT+CRpeUNvg=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.6.tgz_1509726094359_0.6912878968287259"},"directories":{}},"21.3.0-beta.7":{"name":"pretty-format","version":"21.3.0-beta.7","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.7","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-GUxhDwEMPB7P2Y6IzPhHqUHy2eFz7JcNO8Vc3GHWXBHGLJALMLS0x7q65heedUQfP8lxAULBcFYwLm37MT3XGw==","shasum":"5cd0599fc79e89ac4d5f639d9d7aeb83cfa85d11","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrXXSQ9mKagOStXniMgLKINi4IqQ7BTtDeOLqjlsdDDAiEAr+m5jN8KHmJFcC0Ery0LJvdFA0075Dm/ulkUBL8uUjs="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.7.tgz_1509961188645_0.923250918276608"},"directories":{}},"21.3.0-beta.8":{"name":"pretty-format","version":"21.3.0-beta.8","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.8","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-2GJqwkxJtofmptZumdQHWlAduMBeEMpLy2NM6HvicgI9PtVHzgsObRuRfufMD709LB7UryI2F5xpIyziW+9vjg==","shasum":"66cb61c4658c2ecab21251495d6d6c102a25b4ba","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.8.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIYe7IklAA25TphRuAABFIX9Hv8VC9XetIxtKyli5EmgIhAKtrK5lgJsR8vaq5TQxa98iO1uVhiSB8A6v90sFjV+JY"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.8.tgz_1510076622582_0.9108345645945519"},"directories":{}},"21.3.0-beta.9":{"name":"pretty-format","version":"21.3.0-beta.9","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.9","_npmVersion":"5.5.1","_nodeVersion":"8.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-2g5xelJnG75jAdtzBGwUwL0rQz4wIetbZRKSXeUdqxM3zFUv085Ql0O4Arx5y3YGi0LFQQkPDT9SWsWhE+Kdhg==","shasum":"dedd97b728c818f8e9c8818fc4c35c156cae01a5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.9.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBE4pEmTgIA3Xd9ESV0k0dU1BbSFw3K2tgF6v4M3ZDycAiEAyUvXcAkwetQVv/BljLRxMI3Up84ON31KxAvt5aV/DgE="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.9.tgz_1511356652309_0.2100884655956179"},"directories":{}},"21.3.0-beta.10":{"name":"pretty-format","version":"21.3.0-beta.10","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.10","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-vTwmiTua5avxqAgGoHft8z1mxmx0UDf6+JYr4YSrnhEzquN/tkr7+igq3axXBrbc9LqUNayRgBSWgW/kpNRBmw==","shasum":"6899d96e7b41420cdae15813f5695969e211b5bc","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.10.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3aey98aQ2VZyXSrNyPtE1q+cHyM7smjXOkhS4KLoWxgIhAMg53ayDb777kyk9tmXg7oQ6Zkw7kbBXuO88Rgqdp/Oi"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.10.tgz_1511613564251_0.8827821186278015"},"directories":{}},"21.3.0-beta.11":{"name":"pretty-format","version":"21.3.0-beta.11","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.11","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-0Cic2qmU/Q4OnAN6m3rYt2WZIpdFtEgvdA+6bBtporuz29q6bZBlqfIV5oNJ/JLGFvAwecWlUYkrX3fSuozvsw==","shasum":"3a32f4b33b868e20f73018de91a27cc2764643f4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.11.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB50k2owz5pOm1aSvnHICzJGdIwQNLPClotIvYG1nUZJAiEA9tMTjiUXnp83Eyr43Emqb2a7zvWUI+nwrODH+ZWrs3M="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.11.tgz_1511965880572_0.03304202784784138"},"directories":{}},"21.3.0-beta.12":{"name":"pretty-format","version":"21.3.0-beta.12","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.12","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-VF7P/DdKFSvZtjyePORUmhMj9ZAjrTJmZattz6WTB8XHvbY8nuI6tqc0jtdIWjVr8xu3raNej+DySiDfIlO/Fw==","shasum":"fc74dd91aa8a0af1667abd705d59fa31b9295616","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.12.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBOTkmSmNVJ1CNoqpYtSG77Rd4amaKTaJ33bExHL3Ps0AiANyNLl+Ft+sPu3kmIf1YZrxw9oq5sfUCknezyyyHeEBw=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.12.tgz_1512499714975_0.8375277179293334"},"directories":{}},"21.3.0-beta.13":{"name":"pretty-format","version":"21.3.0-beta.13","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.13","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-Yj7N6BYJkQQdVeKtQXN4ATHoMzyCFmr5par/QsujXjm1e49EzDzm4/7zYxrR4AvyuqrTVtfB+kljK82G0PHGOw==","shasum":"e67a45a517de01a119ddb02804cd7232efea34af","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.13.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDvWc5QubrkKjr6V/RCTlrF21pZaTmp5fbtN0o/nGRmNAiAojQ9XGWvhFMMDtsWUl4ZLC1y02oiqTeCNfW5l6V/kPw=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.13.tgz_1512571028845_0.16150664957240224"},"directories":{}},"21.3.0-beta.14":{"name":"pretty-format","version":"21.3.0-beta.14","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.14","_npmVersion":"5.6.0","_nodeVersion":"9.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-yIsEgUDAwqeuJ4MNDIk2vq5ISIsk8YEQEVlGM9LPnKXsZlnkQU+f7taWaPgv+AMOk526j+4CmCm/scCT96KgzA==","shasum":"21ae2e5d29656d54498b7b0ccefda842810eeba5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.14.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID5d/2mln2q2H13y8iP5WM3LjxORnwd9GD3i4691iNW0AiA3ULLKTYsaGYTFkb2t50vFZ8fGIDmfjM69WyRFW0mOBg=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.14.tgz_1513075955153_0.6669253744184971"},"directories":{}},"21.3.0-beta.15":{"name":"pretty-format","version":"21.3.0-beta.15","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@21.3.0-beta.15","_npmVersion":"5.6.0","_nodeVersion":"9.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-LO3IWQMOPzBrxk6SxfYtw2O5MVgSlU5iieQ8hmsSAgTpaB0lVaIORZbSaEUSDfxQfFLdE9889+GTFOe03BA7PQ==","shasum":"702708a64be53619b2c10138dc5a594056fd1569","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-21.3.0-beta.15.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPVd2kM8lkVbyXTzsNswV7yyL7z6mYRYDqKfQWjPl24AiBD7d2hgdjpP1c/O/wFdXVyYNY52OAPpANOLiXYpMhHJw=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-21.3.0-beta.15.tgz_1513344458991_0.48647130909375846"},"directories":{}},"22.0.0":{"name":"pretty-format","version":"22.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-Csm7QFEcmhj9/XtpbHgj7mk7klbCsfsZhZCKNY3FQSoep6eiaBWdPyr+kZAEuYfW0LHBK90uB0mNnYI63uRHcg==","shasum":"3c1da8d100e7e0b0ff1d839f4743b002d5907531","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVDKz90dZjiGdsApZNejfCK+m5UKNegtpdlQexsNyVhAIgFhvNWXOtkRoEVoq+bbaSRcKDP5n0dF6zYF1FChJP42Q="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.0.0.tgz_1513595004523_0.2027169002685696"},"directories":{}},"22.0.1":{"name":"pretty-format","version":"22.0.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-/66A0zEbZUzAH4Xtk3szLp9LERQtq25lwrBygaMK4yg+KWKwZOmpAQUMmYr2uA9bqGogoz0Vu9SrUbeV7Tbwxg==","shasum":"65074c3946f544f6cd8445581293f532e0b3761c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCk1oIpn7tajLh5QpIvE3nQ8Gb05TDns2nRtunOb4FZqgIgGOtHnFCsshEhGhlRavq9kOK+s77o75NyIN7siET7isQ="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.0.1.tgz_1513628965104_0.48569458769634366"},"directories":{}},"22.0.2":{"name":"pretty-format","version":"22.0.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-QcdCRIF1CpmW9ONgiZGrr+UEIbIGTx1ATbqlVlG2Sr3tlrKnL5FdOJGU0dxHk1rK0pFY2VVUHu/eRl7FfJ6Sag==","shasum":"c8a2fa835682ad259badd8ad70093f69a0704bad","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHqoz2sufQwVM6w+O5/H/aRoxpPy6cn8eryv2LUKaE9TAiB4EaczeFBxR72DD4oA/eqWbQphIgcgG620qJQi3Mr2xg=="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.0.2.tgz_1513691584424_0.41861588321626186"},"directories":{}},"22.0.3":{"name":"pretty-format","version":"22.0.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.2.1","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-qXbDFJ2/Kk3HFIaLdOblbsCKQ09kZu4MKbXB+m/EaqD7PZ/wXe2XcRREmQleMh4wmerxlma6eJTh3nxCXYUmmA==","shasum":"a2bfa59fc33ad24aa4429981bb52524b41ba5dd7","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4S+gAZ4JKDzxIgJqnpXFTvg9S+G4ngy1A+8ZERc6PFQIhAJf5o8JARGfZwAexdzspjeql75g16zZdIMlKD3Hg4K75"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.0.3.tgz_1513695534694_0.9589479956775904"},"directories":{}},"22.0.5":{"name":"pretty-format","version":"22.0.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.0.5","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-kWls6NjFrwueDmrTq0qtXxDn/fiAica59J+C4lpE6mfeUYeg6gMR/4TH6ahz/Ceqh8O09au8Qe7TYRyDqT8NvQ==","shasum":"8bad3f12b2b84c76fc57a976bde6770eb4043c69","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.0.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrogp9+2R7PoqGWrVECPQQ0IJK33rU+d9AKuOy90bPsQIgfRvrqFt5ybPRvdsUc9OH5clgoyCZzULHMFyva5sP/Fo="}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.0.5.tgz_1515510592727_0.8857751328032464"},"directories":{}},"22.0.6":{"name":"pretty-format","version":"22.0.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.0.6","_npmVersion":"5.6.0","_nodeVersion":"9.3.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-U7vmPaahWJapEjMbqvHK4D0k7Cux2S1qHsXI5UHwdRK4gidtT0fFwFU3nutg3Ho8b7s5ikN0HVYNaHOjpRiY4g==","shasum":"bbb78e38445f263c2d3b9e281f4b844380990720","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.0.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMfUt5v+9wkawapbD6j5y4ZGgnSgZjxKHSb5/o3bL/UAIhAMTYFEtJryO64+GPWfHuBXgzgLa8yOMPaXGTJe01BWuJ"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.0.6.tgz_1515664005346_0.2216013662982732"},"directories":{}},"22.1.0":{"name":"pretty-format","version":"22.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"cpojer","email":"christoph.pojer@gmail.com"},"dist":{"integrity":"sha512-0HHR5hCmjDGU4sez3w5zRDAAwn7V0vT4SgPiYPZ1XDm5sT3Icb+Bh+fsOP3+Y3UwPjMr7TbRj+L7eQyMkPAxAw==","shasum":"2277605b40ed4529ae4db51ff62f4be817647914","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjUwW3whQc5hKcwSnRBpUNY69d1KyDVZyod92nT2QJ4AIhAIKhXLB6h2U5WN29JuwosCplho7JG7X5n99Pp+KzuYsl"}]},"maintainers":[{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format-22.1.0.tgz_1516017435817_0.08602811326272786"},"directories":{}},"22.4.0":{"name":"pretty-format","version":"22.4.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.4.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==","shasum":"237b1f7e1c50ed03bc65c03ccc29d7c8bb7beb94","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.4.0.tgz","fileCount":16,"unpackedSize":433375,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0mvgb4znh31xNwG735JaQfyed3qrQw17jw5s/FaekCAiAcrs5W7iES/2FECkaJOIv37XSRgndp+wNeldOkhxq6+w=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_22.4.0_1519128211238_0.3710352585898531"},"_hasShrinkwrap":false},"22.4.3":{"name":"pretty-format","version":"22.4.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@22.4.3","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==","shasum":"f873d780839a9c02e9664c8a082e9ee79eaac16f","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-22.4.3.tgz","fileCount":16,"unpackedSize":428862,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHlzziPHmTCBgicxw6PA8WwsAlj8ghcUbP3GHN4Bc4oAIhAJCfhwFim2q4TmOHE6q15E4MobMHCxnADGAaj3klk49C"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_22.4.3_1521648490562_0.8268179225620371"},"_hasShrinkwrap":false},"23.0.0-alpha.2":{"name":"pretty-format","version":"23.0.0-alpha.2","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.2","dist":{"shasum":"c16ab6df05ae34b94536f9aa193ba642db2f9b3c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.2.tgz","fileCount":23,"unpackedSize":427160,"integrity":"sha512-HvJZMzGWFa20SW8lqIPYbpwJx8jY2dajPRqmqBgRD1Z3Upm0XYHRfTGA1eTSocCvXzcSYsQ4IE3p6fBhstXhiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbCfrKqF/HG41cXouu50caisB/QDryaAs4Momc1xxtgQIhAIyZlgWosO6csbWpkpm7GEPWUE5YAhlgHuYbAWOZVFJH"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.2_1522060847231_0.13993785091764677"},"_hasShrinkwrap":false},"23.0.0-alpha.4":{"name":"pretty-format","version":"23.0.0-alpha.4","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.4","dist":{"shasum":"50990fdbbdfe353da0c1046d965f3c5c9b98866e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.4.tgz","fileCount":23,"unpackedSize":430490,"integrity":"sha512-pLE0Zli83OyhZXOfG6MyJ0AzyNVkN6p7/491eR1J9b9/6xr1u4ICcz+5grHZkp6v0+A/IVz3a5RiCDO5b8PsAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvak5wIM7dQnFhSO0BlW4M9DqTji6WM58YD4T17UW4xwIge07uStss0J6qQuGuzqWEwTBCvennREUEg/3vaHK/01Y="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.4_1522067501793_0.4253621525737654"},"_hasShrinkwrap":false},"23.0.0-alpha.5":{"name":"pretty-format","version":"23.0.0-alpha.5","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.5","dist":{"shasum":"49441032994ce2b1cfa74531c1c9d9a36fe59e90","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.5.tgz","fileCount":23,"unpackedSize":430762,"integrity":"sha512-F9gMQ7CurizcjuDminsbeqCLzGmi4/YKaTMfgcv8bNRKDv/Y18N7c+UVToSS/SJ3jwfBU5Dgze5o13yajhhhWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICK93Rks7NgBKqtZ/dn74PfJbkcOtLGOacpruGShpuf7AiAGJJWercND8+qsVSUsDYAzovjUfBbnnxEcbWowWu1fqg=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.5_1523387900663_0.46189603391715317"},"_hasShrinkwrap":false},"23.0.0-alpha.5r":{"name":"pretty-format","version":"23.0.0-alpha.5r","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.5r","dist":{"shasum":"094d001344ba1857b19c6a943949b879f833202b","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.5r.tgz","fileCount":23,"unpackedSize":430763,"integrity":"sha512-nbUKjxi6W7/xuIsDaVRPd3hP81D7SOBYw2IWS89mtUoI/9J0KwKNwybhakiLibMyKcFB5wl9sqokiOt5xVZS/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICOfGQpBM2YPjF/de8M4rN7875YqKilUW/lS2/KJCJ46AiEAoF9fYREx5maulMancRqTje/YcHA/aOhW9VKHGWpHe3s="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.5r_1523425969823_0.716644474951514"},"_hasShrinkwrap":false},"23.0.0-alpha.6r":{"name":"pretty-format","version":"23.0.0-alpha.6r","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.6r","dist":{"shasum":"a50d8381a231f8ae231a8255d7e3de7a6c0d2fe5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.6r.tgz","fileCount":23,"unpackedSize":430763,"integrity":"sha512-+qgVrXuk0Tsj4VTX+lJp2b2hqMMRfRGxevgrtAn2eiZBH5C5PEtWn3wJ/LxXPKdxy0Pavq1+t6LKblyGnRNbqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoPdRV2ltvnFqnDY1N/G3MXiFhbr8QGx4GM0e+szZPFgIhAN9N6RYDzjxka5ZG73mFasSsJwh0nLO6CbjcN7Ns9GLT"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.6r_1523516494617_0.22010912614011202"},"_hasShrinkwrap":false},"23.0.0-alpha.7":{"name":"pretty-format","version":"23.0.0-alpha.7","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.7","dist":{"shasum":"d4a28747c40adf084100315e12c1eb49f122081d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.7.tgz","fileCount":23,"unpackedSize":430762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1kMYCRA9TVsSAnZWagAAoPIP/1gGtxGhqkXnYZwq0Wdv\nT7spY8WVnGBL5RlZS3re8StH7AfkgJMJ0fklouC7c3qSO01KqN3xPkzBan89\nX9+lbxaxqyWs6nv+qPnwfRvdTC9xgukkz2CDVZc17WhpGCIRmusGRBFEqU3z\nvmFXSh46brq1KIgJIjMECKiHvtEhe3jcUTfLiOe/ZIvwxtvGqwtS/Z7sv/qs\nMGTeuLyNZNBzJp6tS/ozeAiUYYSJY0lwZwY7p2f3xInM2zB0xRR4LYBYDYH+\nRJ2lJkfAV1Tph3vxacnOOYoHE278MdVaXIKygv2DZpUE5pIsP8fC+ubArqZd\n8la+zowFGFHGA/VYh/4JzgPX/N7KAuCl9470sfHGEpVxlJz560kuQJTuQ93F\nuAcgAQbsNfplmix6REvfziO8U3O0KStH8q90cQ4mmDKBJj+OZFgVw7fDRhv/\nNFaQ6/dDHl60O30DVJd9AGGYGj1bH5ylpRYIivxwNkxqiOaxl6I6LiDv1o3z\nspL3dJXDsfO2mLIP1Ni3M/zR+oeK0yGqafjYCQKfN8AP4P6uopCFl58EkKew\niy46A3h91zEiPKnaeAynoPJKJe7X/5HYjQJLeM+fiMYhguycqj1ELe3njmG0\nahNE64Gxz9tiuUlkmw3mnza0M/lJ5XV/7tZEflbtWhKVSSgK4tCQXYNv2vu5\n4LOj\r\n=gTH4\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-6WVJin16ZcEQU9pw8tGQLQ6W7P9RZ5hJplOUCLfqk67IXXiA3aWHLcKTQdAP/41Pf4jQSk81OpfIEASVxIhoAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGXQFtm8mjtRzlI4P1Q3PNhaQbLloPdWq7Qio6PkyKVBAiBX1qyo3G0GkvJD3KwQWuv7tabeC19imBT/6FJyKBOQ0Q=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.7_1523991319820_0.6475940960465933"},"_hasShrinkwrap":false},"23.0.0-beta.0":{"name":"pretty-format","version":"23.0.0-beta.0","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-beta.0","dist":{"shasum":"9a61b677f3b61e16001d288aeb51a15d6c9c83b2","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-beta.0.tgz","fileCount":23,"unpackedSize":430761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2bynCRA9TVsSAnZWagAA7XkP/2E+HrecAWlGe+Le9dT+\nyKFS4Z0InIuigdnF2F5mGtIWZz8sxzDlrFu+wRo4iQvU5A8Enwm4VX1wtjQV\nWW4DjPicPWwtuJXMFBDMYie0tKEj2I65+HFi+6Z5fjxug9IP7S76J/xKMF2o\n7hRL7Qx4zxcambG1oXsjonYBOPbrQ/YfIPmRsyEyW4lbOnq6ETs0nvUzXj7G\nyJhtRXd1JEVZooDYfnj9TMvxm7vAq2fB+m1dc8oahoYXgaGDCjN3NVQROC0k\nt+sWDPawcXtb6jFcXfh9mwEIwW9T+582u7ofS1nWfL8Jj5+XpAasI9RpPZ2S\n8HMgfh93gNK1WRuG3FCgy+ptp3B4DrTE5vWcZfxEikI8+UJtzwrO8itu5SQE\n6/AmmZP6UfLOvP+aRNnV6m67Ravwvrf5QmY3Q0gqGot5IvQ13z2daMVI1cM8\nJ4jhp1w3Dw8K+nwZV2rHl38ZyyiAqpKy/YTUFmNIgSVT/2mfRkDkysw59GZl\n6mkxLjauToYHKzoPMiQdgcuQhd/SXyXgBG6UvOXgZ2ynjsnqZsJ8KYl6luBu\ndVq4I8ocQftGZauJWP9kg6INm6anx/4wpzc8vRZudl8sARiLob0x/2NUvJU0\niblTuq9Y41nC9tYRZWHfUl2WrTUlEpMUTK/toTmuvzuw+WnbQwOxlseRYi2B\nU9tB\r\n=Suzf\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-7Ycxqn+lnAh7tImNfzb9vriac3mgZ8pf5P7wAdRxYk6eZRlisP9G7+Ikl0EgU4uZVMhTCwc8b80M4UHUw5J6cA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+95M7ozEo/jemsDvDnRKuWTXvF+JWGbRLq17lpq6MSAiEA9wE0TN8blXOXWUIpK/pQvsTNfOJNDRUBtJpwmNqEyUQ="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-beta.0_1524219047082_0.4477683770943728"},"_hasShrinkwrap":false},"23.0.0-beta.1":{"name":"pretty-format","version":"23.0.0-beta.1","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-beta.1","dist":{"shasum":"f71c105088a74509cf8a8df49612abaf00b017a4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-beta.1.tgz","fileCount":23,"unpackedSize":430761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa21xZCRA9TVsSAnZWagAAmSMQAJzRYkBOP8uz2KDASqul\nSAlD8q5ori+cvPFVmMA8kKszoTdZspxpUW8aj6EaamKqum8U/Gqykigh2p91\n9RY+AqHTN0TJm9EzGAr93kSSsEjnLhsimJLeFg4kXLdR3pUPT4jX6ejyfwTo\nQ7sIJFpBIINKeG6vpE+U5hnb49dhFnHKrzHQvMpdJxEcJO6UlAfkzQYBphd/\nCVzv7ECFAhOrsdTU1pt+eT1uhIuUWRANKRohAaPf8N3t45auPjn2KY2fcOow\nb+GppWYx5CwxcnptiuE8mRh+p5BZg650C6Lc15Mgp/t9loPiGREmadInE1t0\nnoICUGyNFENw1hlxmd0VrAtYRIxaJxHHXc6kQo1Jf8C6JMEGq9eMbAYFicuL\nxzkpyF/oLChM+JoOa3PQF6NyRGUgLSKYDJpNng7ssGp2fmezg31Px0sy+C0L\n152CQwOlxg3JSSbNg7rzM+WDIrP7MaxtPTmyNxevq+AAHca3oCkSQD5i2cbU\n2b+k5v3GIhjJUo15jkvsvWeEk87D9ls9O0Somd+upm2A0Xc7WMK4l7HJTAwC\nX1Wpoi5kwEK+eU+wOTQ5VEF4hczdL0RyplSSCD7RkT2OaFWWPIpE6/AbVtQU\nzLqKlavOGruO9NC/bTOQCGuDBU0hxZoEidd3gYtGJGnYbjAcvEcG4F+7GboY\nOB48\r\n=wVW6\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-YCFu9EMnxX+9JdssqmXiPj0jfjXoWJLilRHCfIFQwoG7ropfYbzlyY7z+gP6L6Mtmwk7rErXgP/0XtQY/auxXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH7nhvQa8MLJpyDnnMZ5p618rg9nVvDTbyiwowKfiWRQIhALw5PHW4W+L1ji7di+eW7b+2PCrbe2bxOc2VOI32mrb5"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-beta.1_1524325464570_0.7195881897469456"},"_hasShrinkwrap":false},"23.0.0-beta.2":{"name":"pretty-format","version":"23.0.0-beta.2","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-beta.2","dist":{"shasum":"fe04b98bfb7ae8ec7a46615f36c36901b59de5a9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-beta.2.tgz","fileCount":23,"unpackedSize":431340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4kHyCRA9TVsSAnZWagAASOUP/i9yKW6fs3PyOCjaCzUP\nyCLh+46gg7/9KXJwxC7kgP/UPK341Cf1MlGZdWxcckBTah7qlptLsm/ubS+o\nHDmaWjO0APIN4iCx5YgVDZjvsOHBkV05/+LVeH10VNQ/u7V2z65WSxBq3PRO\nggukLHxsX0JVkebUKs2hp+GZ8XalCdvPTQYmxE+Gptl5Vr9N3jwhEqrr2Uj6\nVx90GF7Wz+fTpHSIlXeDJ9ydRgHVbzqKf9AbYVLPUR0/mCdLqvDqW6xhj0/D\n2kXRyHmZaLe35C8AtZH6ToJ8d0x4n8hx3x0QfCV2doMUpaKHb//4qQMA0vad\nddluiVkfOC89FKDTuq/OssH4jTwelE3zgYyOKQvSZF8kAwnePbJf87pZ8QKT\nAgZPmTzbU1J4yuZFCxCF6wWInZpRG3twwlXrtvhWsfa5d0MtywP/TAc8VeS+\nP+quXaVEs+4ekMQRR77FJewpkdZEYlcZ27CPsj++WECYaIhRrxIEjf0OksGN\n8Rc9fEnHUqJ8IJpGMHpY9E0KP3mdiowah7tFsdkdwQvtQnekI8Fk4UVfiWLD\nQiLNKlfLN50OcDaV7u7xqPXYnKNxGsAgvZKbtxXkbTBXigc6q137S53VPi6x\nZirTjAZUMtmxLopBNX3dvR/D0UWceFt79j2u8hiJeah4Zx8tZJ+7X0KUmu7A\ntY/y\r\n=fOfm\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-Nx2SZ0EifR9hoM8SrFPJWYnYa3zythw6r2F8Z/B/Kz4TLYlx6sfbR9HWyQ+HzyeHcExIcCdg2FG558T6jyXM/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrn3niRS878Y09U9ms6tHo4qGqlOsmMEDij2GmTA+O0wIhAOWf782MfVaxrJ+dX2ubWnkFx1fefb7ErwAFCl+S8JLL"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-beta.2_1524777457327_0.08931287476959171"},"_hasShrinkwrap":false},"23.0.0-alpha.3r":{"name":"pretty-format","version":"23.0.0-alpha.3r","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-alpha.3r","dist":{"shasum":"c32c5faf5cd5a88c2b286aefe061644df7e434ce","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-alpha.3r.tgz","fileCount":23,"unpackedSize":431479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5xW1CRA9TVsSAnZWagAA01QP/jUGD8Ubf3M4dqFnp9KX\nU/s9YHJdtDFHQHZ6GynPJpzmAUhFnEDRWgyqgQf3r3417nUJ5V2A559vXtNI\nxaiaDS06mLjzt4iz9ZRNB+yFjxT4IZsXJpLxHMDhCsjI7L15wO4rigw7bSwi\nd+F9N5hcUvn/Zv6U89h9O8Rl2/Nz1yHHV7KFKw+KskR6cqyjFMYRkyeCYrCo\ny6N+8pophPxbEquafE2CkCeffCQlUvrdPODx+5BnSPPD1/w8FAP5rZpb+mEh\nKVP1wFPS43KIJDew5Q4TObnjiry5SvmzTyPSLsN9guQHReOTJ8zi3MN0HTUY\nne+TDlW718+KbRX5Y1KCA4oHCfnotTAQUpI5coCoFa7wivZ9XdCq2IZ7TWgH\nUL9PgFCn9KDDthQcsG1J2Nr9gejjDJw/abKc8Q91UUnWtcSUs2mHcsqXJAXu\ntciwnjweGGVt3QNQH5EjZOAzaF1HZiOYzK0W4ysy5/eVXxQX3lCKix4Q62nu\nWb1pbeUq3JXJ5JbMAillQQXSzMLrdCE2IuJntSfNA5obsWWwSbBsoajgqpmR\nTtbaJiT14jPWe3q9Uwgaeqagn4tc5fl53ISVw6EemQkdVNBx2SpTEkI2a/QF\nXPxi7hlyOuUmpk5tRq3TYWaiITi/EPDeLQ+UTBuKM6vXRPlruvMczaRNmXx8\n27dF\r\n=FTUG\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-KKH1MA8I4r2+nCE4N3z2mQ9CKe1346NVyBbuUMKZYoLVmSyYbDEGFrGY9Wswj0bDX3kq/XaOi5XSKSRfyT1dsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGOQR9MNJrRjd7w6GpWdb5aNn8h+sId+jgjLgM4p3bLdAiAWx7TXkxhnSgyEioBxdFYZ45iZUeXVB0bzRcO/UKg/ww=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-alpha.3r_1525093812918_0.42840596561445365"},"_hasShrinkwrap":false},"23.0.0-beta.3r":{"name":"pretty-format","version":"23.0.0-beta.3r","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-beta.3r","dist":{"shasum":"983b39930da7536a3ad40753128f563d37321c88","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-beta.3r.tgz","fileCount":23,"unpackedSize":431478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5xbQCRA9TVsSAnZWagAAiw0P/0MY+CRXH0DTdHDfpWlJ\nSo7sprWdlltZfK7Me1cHSbOd7LBNgiOtmRtr7SfyAA2/09DPs/fY2xRBvVN3\nIMMvlmG/tQYVbVUoTegetUWrhmKM01ga0wZQaVlYjCNh/D29fR6LMZLl+7Ke\nmnZvveX/S7wCt65kjw7JhQD6QouzJl2vCWyqKDe2yHPaNII8TR5iQMefiafl\nRyiDmEW1xeQrbzFPfFKQcFxkd8zeQpAMpLWirwd3qznPXY0zFJYl7EwMIch8\noOHFetvX5GSKMKeDstVR8TdaTEeg7cpAzgLIk8sF3iUj9zhFcSI9GpKJArSW\nQCvgXSZSkFanmCn6ZTdwNdcUanaOha2vYjb0WU50RX9gc9Bu89svdCj1j9fv\nL1Ove9ACjmypw948NmbkjM+wQQfjJt06gLNkS1Hfp5MqdPPI8MLcMQb26g9d\nWdYMxlX3owcbETv3fQa/eDV7RxFVNLLGTrvZqf0eXEdaukgw9rJ+ZmZaBxNA\n6bltNUeTnjHdHjtQj3aEvqz/J9y6+zaKPxVWN9yBHmHVWjyX8csxfucL4pMn\n4iudZ0FiyM+CMY8aG5/geULxVE/6mSXqz3ziRNP8gZWz2lUTXjGdL6nH4C9/\nfuy4DK/zr23b58AP6SYKA9jK9lmH52vltKDDnqIoxR29ptDtj6kCYCFUsczp\n3CGk\r\n=WGbF\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-hZhetlshhuUBdRwIJT6ohX/0JJv1cLyGUOvzL3uk0W0z/VfYDw+N596GJMT0qx/5752PnpkyIUZxd5Goak4iHw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9RI4f/5gHeJSccztIIL7b8StcE3aYvpRLaRqS6LfyxAiEApqkKU2LejApjqn5SIcB9jf7HahmUzwWpoc/EmFBBes0="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-beta.3r_1525094095640_0.8607787653648153"},"_hasShrinkwrap":false},"23.0.0-charlie.0":{"name":"pretty-format","version":"23.0.0-charlie.0","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-charlie.0","dist":{"shasum":"4b3d1f9f7aa61db4aeab3a75a993c036b98c1477","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-charlie.0.tgz","fileCount":23,"unpackedSize":431480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6ZlYCRA9TVsSAnZWagAATBEQAIYehDXX9KDlb5vzdszV\nHddP7Jp6s0BiXwZ8r2QLW1f5+27MNwfL2cuVW/1KD3ZaizVB/in1NHTvcSrM\nDj15BuzQcQcx4x9m1O79FpoItZGcu12UihUa1gcnylVOzGqeaG6iz8s+Vznu\nncJMRdQElmlZOXg0T2/BRsjvSnKfHkgyWjU3RZ6598pYCr9CM0ExC/sCMLrP\n40G+9VA4HgA80FFf1pWrG5FUpVujpfSSgFJN+XZKHJwEjU8e4KbkQFbhcpFk\nTGSy13dGhOprXzD/QwViUCb53tPKUEgOwNBd2GztzQrYl6e+hFc9kjdcXNb6\ng0zhpd1oAY9QtnKKGWWfybmeCdLFuSUDpBSog8OtCU2Ahn00joBSMbJV6pKw\nNJFTRUmDBhaC02VnXBmKHu5W/r6g1XW05jM0yNwScWnheIDhwXH/KmPr9WBT\nvf1GG17u0XO3AF6PODVOBPjsGFTuSi3KRey5r/yvNQiN+V8NNgmYVl6kLCLH\nRusaTgD0TdciZAm4mpL9mUkU/A7unssdbkhogOeUBAueBAFPObg8xEPaeXTP\nNEw3vZ3BpEqz2ErkzRVn2pibmGyWfir0PUsVgrfoXi4VrqxEh2IxeWWcUa8E\n3xgJ0ssurt2HxluJfHTIo6DJwJASz/7x1nwPE+MMvSLCBvfvVIM5pHTGs/v2\nrPAz\r\n=FHxm\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-myTmvtiM+AiTMqRppnY//JNV5gMK9lHaNRFfe6StA5G8OWXwMm0qNrmTHceXm0JtRuNLhzd7DTjbJS3BOrThaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQPzoshuMWAiPp2GGDP/vt9uKsGw8SAKobv5Q+VcxvmAIhAKonv32oDOTFBtwyM6F81bFEN5QEnmB7QMvDAo2Z4UJH"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-charlie.0_1525258583633_0.7890023758873661"},"_hasShrinkwrap":false},"23.0.0-charlie.1":{"name":"pretty-format","version":"23.0.0-charlie.1","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-charlie.1","dist":{"shasum":"cb5fde20ad5f5d2e38197c5f07340e694233e986","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-charlie.1.tgz","fileCount":23,"unpackedSize":432122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6vwoCRA9TVsSAnZWagAA7hYQAKUqxNH7ylXNjuLsO1uB\nUgnMLgeG1KHa7L4EyIAWtWoVUEQWqT+W/Wlqn5t/HSIobX51sNJnNxWhF+6u\nLA8FRgN5S0StZHIV+HjsE2m8ui5Zi2a9QGzpKvbYjqrs2PRrNX3Ykd2a92ex\nmsPSvXgUAh8bhpm+NuXmr0TjuBUWpUDZAtyTWLyJpqLTntVhRmifXMx9qSvP\n3PTgnOXhkH/XQ6hEqFZZ3noMx7Xv4htj9zItDtQWxT5EOMMZSunKz/nZeP+V\n7ccA5PU/2LamnFCUvY8NkiTbRHfC3PhwFaGW1EYgYhWpC9THZP2SBSZ/G1BZ\nSZf0uI52XPzbr/BKSknM7XEC1fpFwtfLp1YCPqPqCe8HNgfbGdbQRwknQjwa\nfjCJO93ORvGsAYCPPhOba7ZIkvZJ9BrD2bZPtV7uuGYkVQLrL8qG8YJkfbxQ\nIhW5hVbyozi7o8k/BQeP6oqFA4syH4HZ2xrFdp5iIte7wqqxBakINODsb17L\nDnjzvqQE5elYy+1xHbkZgF4NyUHAPq/u43ZUZ+lbo86dB+UGLfXLo4q+jrDB\n4E5CBS0P3je28FFhU+bAOz8sk8Qgxx0EC+EXOgJdK0LfBgp7+YZNtoVJbH3H\nSp5ApXBJBsY2HcIdK7wrdBB664UYcDx2Y4QBpwpASoxyC+PW3Mg46gFJg4yg\nLCCt\r\n=aEGb\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-YkSD2FV1j5ies61g6ecjPRV15Q8/hv9xiFhn0ioL1kpCnphvu/J+pZ7K0c0wN/UW2BLLzIqaoIIIFfAKNC2nJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+cyWFtVsnNuviHvBRda/1uuZErYPXfhK5qh7e/fXfUAiByD011KQSDsQT1IdLoTtLWUBSForCzboFeoqQxKn4TVA=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-charlie.1_1525349415837_0.9022465978031704"},"_hasShrinkwrap":false},"23.0.0-charlie.2":{"name":"pretty-format","version":"23.0.0-charlie.2","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-charlie.2","dist":{"shasum":"ab87c9fd8ff445bd2ace394c84000201a041f217","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-charlie.2.tgz","fileCount":23,"unpackedSize":432720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+q2fCRA9TVsSAnZWagAAjZMP/jg0tq3BOCSAwZsvuZFb\nech7cxKXfhHo1T3tySe4bh9Kdwtyc8spOPhTMi7RWatFzX+Aeithel5E7aru\nF9ClfRdUfYH0Fwyb4fDS47YO4lAiX/1ttJE7IoZ8CegBMrrlegwNi2FUgysO\nXOfVprQFnJPbinjvt4oemzmtfF9quZwdlBVPCT1Y44Q+7iVePXHsJTKdpspm\nzXsCgcLn19HiEHiimFmOusPimbEujXbxLbdbr2i61ONWGHXVdvLIf02k2ZEy\n0UtFkJjXnNCUwMDoZZ60ztw++kcUtG1mqjv0eIU8Nf7H+c8rn+3cLW4wM04I\nfTcEJE9ocXpXMaqHfRb6jeVJ4BwPpfuvPEh+eKXKbgtS1CeNQCaPn6iA89cJ\nMhpuW6tQO8d6y5tQxJSk9NN1FXOeTSVt3FBdOOaIdcQeaOSv3PjN4CBxk7pG\nJmB1ajCaamkKzrdj/DVr+jNK77v4C7S5xS5yDGu9lrM+iWNaki0Ut6Cc0Gnt\nS4ISgDo7p1/HttoTuDS8CYjlduc8/O4YYFx4vPdhjhJP6YReY82Bk7T53xST\nYtmI6q9rm0eiLp/mAvreyDXasatp9JYg9tyTVmcuQeQEozvZ9h3g58fJnMF6\nWLklPUsEreQQnT1EUtfQbkYjmJzGzSWM/iQxUHOrMZtvA2z63I+hRzUR1XbG\neTnl\r\n=uih0\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-rEamOtaAb9sqz3tXYFj1mtm7CaK0k8qdi+m2uVSAMreu5NEe0mpcBF75wYQmZ7kYREaYrxF5KmrxNLSjaY/LGw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4pV1uKEdsAhsIeKM1CceGCQ71EVIaQDegvfv23dq4RAiEAyA2U3Al6dlxHfoqvOvBU8Zuvg4CAnp+1AkHMmOL4Imc="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-charlie.2_1526377887160_0.16335274965802293"},"_hasShrinkwrap":false},"23.0.0-charlie.3":{"name":"pretty-format","version":"23.0.0-charlie.3","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-charlie.3","dist":{"shasum":"b251f1bdd5da81110c8d48842ac722405085f5fc","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-charlie.3.tgz","fileCount":23,"unpackedSize":432720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBDA1CRA9TVsSAnZWagAAKSgP/1UHycsBuzD5SDOuJ2GD\nwF7sqH+MGh0ycpMimPKuSAkkBFCyzJSwq4iFxrtxXDPWmy7lE9NKtMLNgiT9\nUVZRIjrCZ0+x9s5QKPC+S65eqp+vsRW35sLVfYM7DYK3bqQNFAZUUTyTI1TV\npl8A9vt2ObC5ukMkL5TIgQAMN0+3vJUA2qp/4kTsV1LMZoa4UhMJ2YTMWfMU\nDKBhIT7sD0AfEn6Qcp0zeKGBq2O3L8ayUvGQnVLhLzL2PbqLKC8X0VfkBZVS\nppZi069gCLigGz3plypD2lB0YBTh+VCna1Zg7E5dqbOCEql1ei9ttOU8MjPw\npquVopTAIpv+tnTcHg/lkcFapZaoy75zoD2PFBLD2XwHy92W1UUcIdOLdz61\nuBMP3BDhj6b4MP7ZRSI4JNhXRGAYPmRbzm4IcdKozhzyzAKG4v/RSPE35Jmr\nl5mM97CvHx6BgIZ59ZFrKHrFClT3nYvycT+RPpItFDDb9IKY0jaDaMtLu5uw\n7yxnzkiOukVlIXIX/hcpiK+8lDAJoY+i6IRCAnvRUZiBku8RtkQOOxgSe/6T\nWqZSBH5vpBSMPW7wrokmtjPNeC59mINdn+k/+hyo3DL2ZVKBd4QrKcxCVJew\nB13+k+fFBNsDWPlr4epY1/xfK0LQid2SmCi/iN2VGMEx53XhyFi7MQKgWAG+\nqKOv\r\n=DjCz\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-y8rm7AlLBm7i4O2hC4Q2OKh5Z/lccouq80jrRHGVyc9x0xJRU17VnkgKuTrbLMvL7DNVVqN0GqRDMxoIe+Pxwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUUjkcMo0H1BBUOZ6CT1b9pFWCydLNJJUE7aIParzysQIgXoAskg2uQSng+UVx7qf2Jei0qDW5yHtmDXG6TR2qT88="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-charlie.3_1527001141117_0.6048019972719636"},"_hasShrinkwrap":false},"23.0.0-charlie.4":{"name":"pretty-format","version":"23.0.0-charlie.4","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"readmeFilename":"README.md","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n* Supports all built-in JavaScript types\n * primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`,\n `undefined`\n * other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n * collection types:\n * `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`,\n `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`,\n `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n * `Map`, `Set`, `WeakMap`, `WeakSet`\n * `Object`\n* [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n * similar performance to `JSON.stringify` in v8\n * significantly faster than `util.format` in Node.js\n* Serialize application-specific data types with built-in or user-defined\n plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from\n[ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n* `ReactElement` for elements from `react`\n* `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of\nits built-in plugins. For this purpose, plugins are also known as **snapshot\nserializers**.\n\nTo serialize application-specific data types, you can add modules to\n`devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any\nmodules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They\nprecede built-in plugins for React, HTML, and Immutable.js data types. For\nexample, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)`\nmethod returns a truthy value, then `prettyFormat(val, options)` returns the\nresult from either:\n\n* `serialize(val, …)` method of the **improved** interface (available in\n **version 21** or later)\n* `print(val, …)` method of the **original** interface (if plugin does not have\n `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize\n**objects** which have certain properties, then a guarded expression like\n`val != null && …` or more concise `val && …` prevents the following errors:\n\n* `TypeError: Cannot read property 'whatever' of null`\n* `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* unchanging `config` object: derived from `options`\n* current `indentation` string: concatenate to `indent` from `config`\n* current `depth` number: compare to `maxDepth` from `config`\n* current `refs` array: find circular references in objects\n* `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in\n`options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n* `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n* `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is\n `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of\ncourse, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n* that **do not** depend on options other than `highlight` or `min`\n* that **do not** depend on `depth` or `refs` in recursive traversal, and\n* if values either\n * do **not** require indentation, or\n * do **not** occur as children of JavaScript data structures (for example,\n array)\n\nWrite `print` to return a string, given the arguments:\n\n* `val` which “passed the test”\n* current `printer(valChild)` callback function: serialize children\n* current `indenter(lines)` callback function: indent lines at the next level\n* unchanging `config` object: derived from `options`\n* unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n* `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n* `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is\n `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n* the key is the same (for example, `tag`)\n* the value in `colors` is a object with `open` and `close` properties whose\n values are escape codes from\n [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in\n `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding\nrest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the\noriginal `print` interface is a reason to use the improved `serialize`\ninterface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","_id":"pretty-format@23.0.0-charlie.4","dist":{"shasum":"9b3f34aa66113f497b637a9b72a9c8a5ff749d0d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0-charlie.4.tgz","fileCount":23,"unpackedSize":432720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBUWSCRA9TVsSAnZWagAADEQP/j8IvBo0ZUMbkn/cI/xp\n2wMbKTH2WeBxkV7aIBxS57FwGrEiFSUzDgi2hmWmjFpEaT/UchC4BgKfTCde\nDi4MkgbPsr475prPHR7xGDRXnOK1MNQ89cWQajWWjKfbqludocE4UloHd/pO\nsw+6d5+uvSOmo51KvXMnYrvQ4a26B9HoYUHMEKR58uWVTSIfxRIyg8nRkcsB\noxk+A27p8kvOBh/h5slsTDiHahODY8CGiz9rLGUetVQ5Pksm3iMwTXE2EXT3\nvAwUt8oTDMnUNPLQV8QB3N1qrpGL1N0ibMPhPwndaF+PG2KM7W/l5/C14Ha7\nX5hH9P+zNInwg0YkNpW+Dt3ONVZZiQArQ0e3GQa65FgPgXLiDZUxfRsXgGnX\nr16XOYwyUIiQwPiIiWOdfLx4BQdm0kNVNK7wTcUTqX/WPDH4S3O4t33rGWoL\nZQn4ENjQ70spKJ6CQtW/64lfs2aOsFs9sWorTAKiIcRkxJYkF3D/3x/OsAxS\n+T5HUZXgMu1B2vpwGdnxkYDm6gnubkZKKdYh+OMMnrnFNJIlx8zz4k0VwdVg\nrNu7oMruRuEcSqSlhIngrvNOMceHqwW80PORBgb6Gds7QTT9sOATPUKox5Kz\nnmHIb2v5101Yewf841RWuD0eUInVdqhIvTzJtRcCt1ggoTz4DiSojauOlvo2\nRpOc\r\n=tUpG\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-Nkvd/57vjhvVApnST3HZyTEPtHjYcQzxTlIM3X8t6PcVyIvzKZcGWNYOCAYh7erd0etU4CNHNCKfRHgRmI9Uog==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD06ivsLGO0Wnd/1P8UrdpZQT7jTOlq5UpGNqPJee6p8QIgN8NwUYnEJjZu+5As6PueasZSAAaTp2+UH3TAhLJeg7c="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0-charlie.4_1527072146060_0.2617374969989241"},"_hasShrinkwrap":false},"23.0.0":{"name":"pretty-format","version":"23.0.0","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"_id":"pretty-format@23.0.0","dist":{"shasum":"b66dc584a0907b1969783c4c20e4d1180b18ac75","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.0.tgz","fileCount":23,"unpackedSize":432710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBvXDCRA9TVsSAnZWagAAVF4P/1rjgZx0TLyQwWM5ZUnk\n8QVeN/n3frezxgbc0bYGmHsqePscEaV+u4JhuHXCEq208OsLZvnafsbfdouF\nC6HuKwzwPg47ecZI1rw60BGZ2dYBL/8/yzWAZXH3qSCfFd3BV0nCA4r1DwTT\n33gOadWiqAoDYLFnRsnRX7bHZseaCqNDMghHFXsSBXRRoZx6I6QQcuiIn6UM\njQFAgH4i4idU1FMtUwixbfduqreV8TS5ssuxHUhs1QC4q5S+buetOJ8Js/wo\n06a/7Jz84AdRtKS/b+1i+orOrPmFGspvpuXRmsIuX2hH+Zy8oSZq1pB+yQuw\nkS63ooT103mqeBg2oN0cgO+r+JUCxd3oHbdWm1ah9rbMR3RyzftozW4B2Gat\nZiRgAgiJub/U3wIqQEzgfVVui2FzfVLMinSFEg5+m8jupy4lc9O8e1+KKeLm\nBE/HCLJhc/DcLsYxXF3/Vrsw9yRQr/7TipdabUzscvJPO1aT+4tukydIlf29\nO2tWca+za3OLFZIGNTc1WKTrBrnVynukSeuQchLXWpQ3LsYyPGQq8wRa+hlu\n9LE0TX+VmGdcADeL4q4nwk11SSLgmMBqsbphl39HihfORxaWXE7ntM4eN7l+\n/NmaFmmJxrXhk9acbMQaTNrBE2YDdv15PEAYdxT8XvXsuVHBGyKujSmCbY7r\n3KgL\r\n=8WA7\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-i70nY/4whJ5SAD3Mc3X07CD5cTkrXtoD94nBFV+Y80sar/3FJC/h6HEhoUK9pVTjadJo+lgSPrgXO4XLC5UAtA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9qxHzTOkVvdTSbgOYW5Ln2ArODUV4CnuttQM+Bnc0mAiA1yf6hAcsyzlz4YIr44yXN9tHgjFKCi46usyH9YesKIg=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.0_1527182786416_0.3664543715646642"},"_hasShrinkwrap":false},"23.0.1":{"name":"pretty-format","version":"23.0.1","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"_id":"pretty-format@23.0.1","dist":{"shasum":"d61d065268e4c759083bccbca27a01ad7c7601f4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.0.1.tgz","fileCount":23,"unpackedSize":433054,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCs8yCRA9TVsSAnZWagAA/XUP/17XFHffKMQK5sHkzigC\nJX2sCkgY0LzowxMkzRO6ocY0sWnBrJXG9/z+hb4IDuzDuaLfofmw17DC2zTY\n/TOJz3118Xbb+WKLJ3wccT6GPrKeX3Irqf9D4iMwmZ+CrEEB9Fe25Oag8MRO\nQL/r1wT4KGfsIQibauUJySzMsHqV5PCYArX1LC5m8pNs25CVDsMtEi0gcCRN\nGTRo+HWziauDVJkZaahi/LkgGBbqltsDlZe4b5lztQ+2/bNNJ0hK9H+DzQoY\nFEakHiVCbD7eDf3AbS/WoSqpKA7EbF1eTYiKlmOeQETn4JOV33FeiZAQVaLg\ni+4jpZYosMppdhbHWDplKEko9kmKhQiQ5+bjNR1p9B5c/zb29M8qD0KzWuLV\nSjmepFXcWFyAYVHcyTTjrYMRW6MiXc6MOIfH8WWP6/kG0hDpqWNSbG8JwtOW\nhNItR7kc6VIG+G4NeJ6wS7RZi6w9YWiPtWbF8tDboeidsOVlS5GPUab6upag\n04lMeLJQdf0hNAtrFJsMb9lDs8q+wLoH5OeihTcMnVAIrC3XR8mM3C0aFdD+\n5+pMv98mEGCTgQPbzXiUlmNLQhVpGSE4ZRQcNe74y32sZvMTsIah9aJUXO1q\nmN3vOnuSzTxlR9BW82ISg4TG5us+3ywD1JxUrLhJLNL423sB7s+ehPE+hjwt\nQSMI\r\n=CHUR\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-B70OAPh817O6ngYj/FWifGUQx3Q+PHYEKEqUVAJSisKr1gAa4pbvtI6aKcUZGOqaFW/+8hD1Djx/ZqWRYi7Rzw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfkO1R0C1X2jIqHvdK/Exh1ueJR1/9gCkKA/te364inwIhAK/NTolvGHpNesTdqBb/UtUnLj4ki4IBiDNr1Jj+AFR1"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.0.1_1527435057085_0.6097930469393269"},"_hasShrinkwrap":false},"23.2.0":{"name":"pretty-format","version":"23.2.0","repository":{"type":"git","url":"https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"_id":"pretty-format@23.2.0","dist":{"shasum":"3b0aaa63c018a53583373c1cb3a5d96cc5e83017","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.2.0.tgz","fileCount":23,"unpackedSize":433246,"integrity":"sha512-swQ+9gCqL+OC8ti2JWr1wG9XO4iZez5a3bPHzgeWYFNZHrFuovCRIyNd2JDvnOsPT3NZ/gkng5ZCS8ItdtFx4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGByaOX39cBe3b89TbuAsQlbTaTsy+/SY7QQS7stR8cAiA9T+XJSFWVMblnjGgs3kKAo1IiNexDrvPmHcqLW/wZxw=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.2.0_1529935516862_0.6045534628074585"},"_hasShrinkwrap":false},"23.5.0":{"name":"pretty-format","version":"23.5.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@23.5.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-iFLvYTXOn+C/s7eV+pr4E8DD7lYa2/klXMEz+lvH14qSDWAJ7S+kFmMe1SIWesATHQxopHTxRcB2nrpExhzaBA==","shasum":"0f9601ad9da70fe690a269cd3efca732c210687c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.5.0.tgz","fileCount":16,"unpackedSize":433737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbZhvCRA9TVsSAnZWagAAKGgP/1BDFxSthZy6Qhd8XhGL\n5MMo7uyt4GF9fbXBewHcK1wa1QkSQy8WJbUwf56fP3XHJijTJkH4bDYh8RgA\nhiT+YHckwGZo1/5nbKZyss7VUtvGXGWdY4H9wMO14OKu4V2i9mnGvdUF2m3+\nNi0VkHKxvAaGKeimv9HXetqBlAuoDrR1BvEM2Vi1TegSYgrZ86NdThGb8Ws5\nzzv+xALhm317ghiUWsFflVBCKFx9OS2hKJMGxvFk0GCDgFEF41kL9EOpF4nG\nO2eSZH4iLOJJRPnLBUAvopzLg0u/XRX7g1B/JgZXl9MAUvInJmVLMDRyUdJf\nUJtJogrFw52vtKe4l9yDjpT6SodbTDkkMl+0dsdWjt7TG4m21UaZNg7Qlz9C\n0QWei51fptpBBU0bfUCgNy9+Zzr2EsiRfDYRXnW3pkBxSTxsPnihcmkDqL95\nANCIhg9aA0XDck99fermdr5AWWVDD48+CFyuee3UN1y+6/lurjF1QLDHXTrr\nLncGK5yK2sSxrP4M6axSAJYsLvPgP8f3fUuLWXeRYgxLvPRVYbsO+aCBbD7F\nlAmt4Uxqf6MnjxAYj/yo58Ztk9RdCNrGT75qugaVsDIQz39Kqlb/sqg5y6MP\nrZku0qwOviZuA4kHAxG0CeBDZo/qVBljvLuptdUfOH8/n+ChUJc2UCLZbXsR\n4A7+\r\n=DIrr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOJBg703+3toNjrQ7ulS3pdEUOiFfsNDwTm4FnrhygUAIgKOC3RxfiQS23CItUnVWuVrdfI8H2fe9HeWfS1f2Wub8="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.5.0_1533909102720_0.21408303510420867"},"_hasShrinkwrap":false},"23.6.0":{"name":"pretty-format","version":"23.6.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^3.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@23.6.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==","shasum":"5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-23.6.0.tgz","fileCount":16,"unpackedSize":433899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblmbOCRA9TVsSAnZWagAA208P/2Xx+4uHaLcmjwE56Cpt\nbLhQoq7zDL6QV6Jycgav2QJVfbrfOhCWt6RhIVLE6uaJ8T0befdhZmX0qWjV\nsZaRqp4ohpXAozs1sKpEleHLRWuFHrx4jedCegr4WvMweEF1yvdbKwd78pH/\nqELo28QSmMzLCvl4dyA8rBzOjNnPpdpT2VQPkiXYV1BBUcnzfcMOUzjPjwcm\nqE515phlFkrTSnaGw09cRlCa83xS1gEUQsVadalWVdcQttUDaYQmxaEvC6OZ\n/OPklguDQ5v27M8xaNWK2iCf98gEdlTM1S0bualTWwtiKF5FZo+qLcqAu0fu\n0hMtakZ+1jOAPkTdpzhhjana7WsCNdsnyzuaYfpSYxWEGqDgnDlNwx257sPF\nToz/NlvTubvp2F0jSfEkk/FSi3s0FxrNtgjC/SLAUQEahl60n4WQK8bv77Rt\nU4dR01ezM+6MHYSRAZtw9OE523taVCxo46ULnZOlgDgbc5HfMaUpOn0tIPd5\nh8jarRTykZWr9NZ6gE8JFRs4doJwPDi6uHwYlRp4knCJnb0nBVa4dNo4GvYM\n0ms0wBGVygxtXHUSps7c2oRQxpVPzvInrzpLb95jpnV3DWOOsbaY8NJPM40V\nYryrncB4pnDZXXLYm8XBfbFxOrFfKDIX2YjgMdk37SlyS04rTgMERzIsRtXE\n5FHI\r\n=vD3x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVy/DnhYZPIayfp9KmmEucgkw/ZaH7fHCMEXk7MOWR8AIhAMU7PrmnQd00yxDtyFaeBuu3rvQo6Jk0mH4D1+JIcU8B"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_23.6.0_1536583373092_0.039146124648338665"},"_hasShrinkwrap":false},"24.0.0-alpha.0":{"name":"pretty-format","version":"24.0.0-alpha.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"gitHead":"22f67d49ffcce7a5b6d6891438b837b3b26ba9db","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.0","_npmVersion":"5.6.0","_nodeVersion":"8.10.0","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-qOtQFQVF+JoMhrMgeZnyobN0USkdRMjZFvodS4DCg1ltnR7q4JDnT6rt0tbaaknlOrdAgRNN2iwdjRAUHykU8Q==","shasum":"b7dde608501b681b8eaccf56522f93b97abad6cd","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.0.tgz","fileCount":17,"unpackedSize":387127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyco+CRA9TVsSAnZWagAA6TIP/2/Z1WTNhrlggIhUXr+Y\nQwxxI6qU6UOgRrLyOveGbru2RevwvuPC3bs6NdqUb5VetzqVLQlWglNhjYLa\nGJ023wfg5XD20t+hYLUHC+0lqB9dv+3QZlhDl+bsCnkGYHdnoZOHHZ7AodA+\n+m2Vu5yKWFL7FEiuztWgkyWruNVGLEGD9vxe0B9mjwYP45UMmCvZJFPI3qau\nXFmtUEGW/oyjCNhgGm4LkNYVrrK2UQ3v5heHKGU3PU06mX8N5Kx/rpmiJy49\nYz6yENs4Jxn/v6vMOEZbM1GjHyivRWVKI+MjCJklUwkyLVzEp5ZVSOgm0ruv\nJ/obOa2LSlEp07x81cMf0Wwfb/W8FGeFB7CCz0S9kFOSfp/WjDwO382HLrqC\nmeIFKRA8PAYA90CcqF7uLG4eRD44WIBxYtYr1K8zPfiMrrhyT5UUgrEg4535\nB5uReVN+ZnCo24sLU1y/gcgXH3K8GsMpnx7lktOyxeKBIeUe7hF5hf71tocn\nqDFWbTTOxDw7VOW3BkLlHG+iH50ZLPb4kFoooZYj7kbUbwINZTwUQkVq+C2x\nYEc91x6smObf1ZHhcDuCYWY28xHE1df9t1tBhftjfNTyW0RgQy37F68n2o/y\ngcAIQfCdS3SWufPncpRBBM9pyV3QVh8QLLvp4ceAiLimEYhTmufQSNVdUlUO\nTwoH\r\n=4SxM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBbUU3f7EXrs+RF9RtyMIgFiOvyaq78pRHfN0V7hh6+gIhAPVK7c6mmdkM9NTZnmW5+8GD3wGSIeCn/azommay/VZH"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.0_1539951166013_0.3702080103625105"},"_hasShrinkwrap":false},"24.0.0-alpha.1":{"name":"pretty-format","version":"24.0.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"gitHead":"4954f46708415174c48a58f296a605fbe1244a31","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.1","_npmVersion":"5.6.0","_nodeVersion":"8.10.0","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-fpbQUw/B3MQASmXyh+hchSq7GKg8EgRoC3IE8imHxVassZ6BTDlvflNgLAeexEez4Jm1df+pEfOZeINNH/Z89g==","shasum":"38dc7af33801d644755235be1940fc1b1799e112","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.1.tgz","fileCount":17,"unpackedSize":387127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbze5VCRA9TVsSAnZWagAA4VUP/2ppcNjSBoaTwt5cFF9C\nXRVVYY550faSaN2utyGCJ5RvHYG4CwvBEk1CRZa4KjRoDnk3H2nbTRK/J9Y+\nCjZCkc5XE8MDmDAd09cWFU6gh3e4J/hiTQkS4AGrXiQywGpN4VGoqburnAov\n2rVsGfuYi8Z16ylO+roJzoSG900v52ATsBXurbZHGuPC+/tsHWAswR47wO6q\nI+8LspHN61KvxR/mwZOf/QGZZzXSG1Ah4xmj9X0Qfz83vXfJFNWFYEboCsaI\nqMYSgbcWLumHWQ47Yk6Tb4QriNR1+eN0LMi7AH+8vN24M01TxGJoTsym93Kw\nEWFxilgQxNy2ZXJ12zdQ7qjhgR1JOrAKFKVUpNZEy9stOyS+lElx/qjy/sNw\nxYKIbXM0HqzRvOLkkF2p+/BL9lmZp07w8jo+T+8iKjASkZy7IttgKuvsdEQQ\n8oFt5BN7D7FX8ZioGoVVfJUvmCdv4i6KfcgeblYHKl25NJCBDPTFFdsF32bJ\nGPzKxsZ9mjcrO+6oKIzRDIbVvkgIFs9xf1iXjOi31g6L5S5MWo13nEOUA2kh\n3besrh++glkTEfjx0cLbVg1ZDkxLYLMpZEUebrcc8G/J0mZMpx6FNU7Deggp\nnq/3fmYuc6D3DbApjaY372L2oEMxry9Sj+Zr1qAdAnP0uTudvh+SE1jYxmP4\nHjFe\r\n=+qDc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIElpQ1ueqyvVC5BrI17YLBAqELFqBDXHTjqDWuz4zXygAiAzQOVtDIxtfxULqt8P7f9yqOtt8+grFjXXND7vDzLi8Q=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.1_1540222549216_0.9692385031286568"},"_hasShrinkwrap":false},"24.0.0-alpha.2":{"name":"pretty-format","version":"24.0.0-alpha.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"c5e36835cff4b241327db9cf58c8f6f7227ed1f7","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-mqFCjVVaBk00XB6V3BPrH7WAwOimfLMDjj1YDpSmV8BlDkEcTtQU/Qu6KDTsSi7lYjzHzZp8+NsmeMXw/6Cl4A==","shasum":"cbcd7609a4e594c478f46aa1b6d652d285342671","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.2.tgz","fileCount":18,"unpackedSize":929427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0aAoCRA9TVsSAnZWagAAzOkP/2qL3XnyKKPBDWSjWf5p\n9q6EyBqW7Wbe8/8ivTkEwHvh+gLTsg9R98pLnG08PcbYKfo7nlOkx8PfOSI4\nuM85KvmAzviNzFwiGrSmm/WeZA9qxiYH0xtl0eF/brXW/KITSKAhaxBWjy93\n7ZSa3Oof0wrjVl0dRKBE8Y0AFxjoefvN8w5SlYkl019Wskd76pZXmsGrEzcW\njzHFj459g1wIINA7FN5NUtALVknnNldX7mYjUdsCNn8Lr0hUK9zWoDT8+nKz\nXFsRpQ6p8G0C3X7MPAiFsZzkTMBMf8tonfDCv5lgT2MqnEm3piH53tjatpv1\nJ1YMNdpCbxoEXBwuJCW3+MZhLX6GGDrSNYPYDpAdWUA0NJgMIIsohNiq9hhe\nGy648coxYfKsSl5OHBNz8tdA3oGVxJ5G1PkcFFLZ0LMP9SOlNo4+HaiQOZpP\n8Ec/718KVpgw2HAx5UsqPN54kWVx61DbsIDwj/mCxmQccuZdzr8lcPSJNJXB\n/dbKwZHXWQUTR2swHStsNI4W+ZokZLwyw9YiAUo+nUlPKOTsjs2uAptteJl4\np6Lbamzc56uyheQGoaqzCrcfqPidF0jdTaropu6M+KKOZV1fFV1RxfrtG95A\nMG3z+HOOxyfq+oP0cI3wPR1R0z2Ei6KRA0pm2RSoI2p/n9KaUm3RA66ePqMX\nljUp\r\n=5D2s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD60egOQMd6BABthiPAC4x0LPc0RwjQ/UlYB4Q6C6dTHgIgXogqqcDTd8n+BfoWNteLh3BPRPEyJ4QFfdQVrkf6fso="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.2_1540464679697_0.9806271720599484"},"_hasShrinkwrap":false},"24.0.0-alpha.4":{"name":"pretty-format","version":"24.0.0-alpha.4","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"e41f0bb257c6652c3100b97a1087f9f812fbea0d","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-icvbBt3XlLEVqPHdHwR2Ou9+hezS9Eccd+mA+fXfOU7T9t7ClOpq2HgCwlyw+3WogccCubKWnmzyrA/3ZZ/aOA==","shasum":"cc1f7497e2496b71f8ad99f1526096e515fada03","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.4.tgz","fileCount":17,"unpackedSize":387166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb00HMCRA9TVsSAnZWagAAXaYQAIKx5Qn8MNNquXc6Py0b\nhchVgg3o9VR8AtKjggu26gioTpZCtqjENWdRK3/C9WGpdBQwvkV997yQaIKn\nTAKKOdHTFvJK63F5M0RbSAvoxAmma5cwHUU1Qh6qDMr+JJh/1Uk99f7rr8Uu\n/nbavzfPOpJzgnQytWsa+4oSzXwoyZrH4HFZB/Z1fRCk2oDOj9dr9AjLBozG\nMmkfpeioK4MuPjmWOud0HUXb8Vx6aiH3Ug/R5AOJQiJFVGhm1y8xQxDD3xsS\nWMAQtWFyUL7B3Tiodt6WrGi5F9ce5Kll6Yxti5O4wS9TUjuKeZmYGQYIjGQo\nvxrHOqWMHTfhiKz+OIROJJQGsLoj2aPgjrpprU0gQw/s1EKfipIG/227cD0M\nH6gMQIqF+I7oyqbEysW0cUK0cHVTlKY28RWVDB3LpHWs/2ssjn4kjmpUViMO\n2AKpR9d2C78RkYEkNdMROAokyrnSmgdj8LJ8+y3CV1lSzRheBs4OyBYgX4NO\neQkR+v5tBfxZEBSg/jdijL5kFHozM4Sw2hBFldLyQfzAZX7QPy89Kn8F5RqH\nnlBYvO+ftjTcycDGZkPmaUiLchQUAKbNQiozmU8VllamhJcwBrbRuWXedVyq\nrn5haMuQrqOWCwoCTI+4Ude3LwOy8pTSz5Aa91oG8DZ/mLiEbCH33Kt/ziwB\nF7Rx\r\n=NkyY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvSFt80bV+IzHvMSXweyARFBQwmr3K04qwjZPUUKuQ0AiEAl2JCFPIRBjlD9Eh1QnVQ3JDJ+YHccBHCKA4ukdqCgRE="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.4_1540571595114_0.5456319880913951"},"_hasShrinkwrap":false},"24.0.0-alpha.5":{"name":"pretty-format","version":"24.0.0-alpha.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"2c18a53e8ff2437bba5fcb8076b754ac5f79f9f8","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-X8GIu0dnCsa5dXxuqLLBEiLLJyrP4qglGukZgwEEwpwPzbd9IL19/4KKbt39BZ4kG9viI8VNUwrUfl3mHlTD3w==","shasum":"7d55172dd88d5cc874353f2b60403f3a41e248fa","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.5.tgz","fileCount":17,"unpackedSize":387166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5YfOCRA9TVsSAnZWagAAdowP/2VdEiimilODluzBspf/\nfYsU0tLblobIcj4weqe6KQ3MbCdvs+9UcMqeYufsBJJyKnwl1J/6Nhh9jxMr\nH+VaV9coTlr5fcygFGMAX+f5G12j+EdVDZnxGXas9Rcx6OhBUacOJzKxD450\niYXTkQx37WEJ9YxEPnI9dj+LuizxyULohPzhbDCc5RfKkUJVrvCcd2JD286o\nftAdRc7A+oGQJh0BI39lgV/xrVyB9vVuM1Uqo+axyNcMHkaEwN50yHOSM/ug\n2BH8SA+buQ0JwzQ9ScfWrqmTXxnDBm4RcoOjcFPBdMCnh6Lz+yXLZNhb4UaO\n4EgAOInCSATsP++E/PjRs5OKG6aNU0FHQ/JnD2dqS8GEJSqoyBZB5fGSsRcd\nL9tAj8XhQN6FyxgxGydWIybx+8TkB6xRtJ+BTZl71G1lKFJMAVHbVQ5WeJ9b\n6LxbTtT5zOaEP946R9+Kw9nnPuz2NzXgUrCOb/yXib5kCzJo+KWUZhitfnUZ\n7cAJLcB7XJIyvrKdjE0pAHfndtLasOJZnZ/+IWw8lJakJd/J202nwTA77PUa\n9xFXd0N3Sy107Hdj4rOFj6nw+2hET+JcDUeteKqqAGiq9dq/R0Ic1pXTaQNk\nhRB52YZfKrDEYWQWmwsDHiIuNddd6ifBJRCCm+RdVZ4ljUmbQXO3uHWquy4B\nMvtL\r\n=y+nW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHYTzGRMocxKn3fYNmWYt4IPov4ddV9pXyM6c8OVzykRAiBvJhtK/wVFwizvRkJrXh2YK5sSliWM13f13YAt/+k80g=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.5_1541769165697_0.919979009351394"},"_hasShrinkwrap":false},"24.0.0-alpha.6":{"name":"pretty-format","version":"24.0.0-alpha.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"49d08403a941e596eda1279c07a1eaf4d4a73dad","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-zG2m6YJeuzwBFqb5EIdmwYVf30sap+iMRuYNPytOccEXZMAJbPIFGKVJ/U0WjQegmnQbRo9CI7j6j3HtDaifiA==","shasum":"25ad2fa46b342d6278bf241c5d2114d4376fbac1","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.6.tgz","fileCount":17,"unpackedSize":387166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5ci3CRA9TVsSAnZWagAA5EYP/2UkBM5ScCWplOTdfsbb\nYE9wMb/2PPYNcxEXtqLoKgvidoEjGkhnQKyVXiqqkREjupRR+NxfC+36Rc7Y\nsTkLZu/CfVwy8f5IvkTflRlbL80dB6ng76iDarz/0iFixUCCYhQUTgkvXyp3\nVZk7QRy4UtXP1f9ASssZrM6c+r7TpCzZ6B0+U5GfJsUs0QF9gxbEUj2MqxbX\nzPcHEHQOR7iTXyb9606IZmeSnrRgdaPD9Kh3D5lL2pwlzIi+yztvIxgQkbFk\n9DbVhJXkUasMZE8rqHDZUWjZQ1E9MBBcnICQQ80R1ZjzkocyThVbuKAM9SVC\nO5Ih/qzo7XzZ9YlU6Z8se/m6LNRDRHo2dvVGbUEdAJhiQXgWD2kHlq/423fF\nsQ+KVc0k72sGyaw67RgCvZO44X3Vevc5MsPaulptxsZJSYO30DFXWaZ68rPR\nBKkLBLttLBPHthEgpiN7Ek9jUztHl1N8GRCAZSFZyAMaz2GCCFECWm0Hd2Sf\njrNTXVMl4jSai4EB+Wbxb1yb5JXirF+CsDtTpRnhUu0YFumvRDGiQxInFVzf\ng4hqIOr6Sq01NGqZGo3l1ds5bBSphya8htf0aChrO/CArky9aWYonvIRnut7\nu4ac9A86XQno9eRguxoP47dKmRkQTiITi/ajMiwnepqGNm6KUkBtJtce/Y33\nalON\r\n=Kf0G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGW8u/wYvh/GeEzZsk5N7hKHfcaeyMzn+Ea8OX7gkT9qAiEAmrWCMY3EdZIWs7u1jjYcW/cCPxChpyHymfwFgWTO5BA="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.6_1541785782719_0.07882660895723093"},"_hasShrinkwrap":false},"24.0.0-alpha.7":{"name":"pretty-format","version":"24.0.0-alpha.7","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"gitHead":"4954f46708415174c48a58f296a605fbe1244a31","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.7","_npmVersion":"5.6.0","_nodeVersion":"8.10.0","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-tYRo6D7Ttgthp5vJHzmeVt0mNpqjjqHlNlPvtT6mN5jn15J80P/BRDd8Gg5ouuxR2iGw7qLFidN8L0vEuUasTA==","shasum":"c3f932635a38569921eac940b2217bb774ef4d18","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.7.tgz","fileCount":5,"unpackedSize":277728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD+DdCRA9TVsSAnZWagAA1tIP/3u4jUFx+uTVpVX3amOi\nus7Hp34Rpma47++U7UIaHs4mOETVMz8k96evDFHIP7oegUoQsmSdaO4T7Iam\nbeqonA8OJ2gbdgZ+8nBpM6LTFv9ZM2WTfaTbCG2961EDvbNTo8eqaakznXLh\ndIQoFxrCqzLE25/v5rHshSVA+T6OLaVv3Bff12ClrvrPjm85Zt6PM3+PbP83\nDN2BHYe054T0MIoxfaxdZaoutjyOPzx2GoxGyDlprOSpcZJiRfb6GWLx55e9\nHnnxRfgSfoC6GUsjZr8Uv29hLOxBLsSlaVlzGjlE4iWhsd7K2JQpUeKgnsJ9\nHgYvWdqeP20FcOuG5L90a+28Z1HUvyRddRZEt6esi+sCJOAYThn4dLC/T4EX\nUy2Zu8p65CjhzVELZPUeurJcefVGXBwhlzyZfYd3TfLvoMWCYUxK8zp49yN1\nPBo0iD9MKKti7KYmxRbGdYT0AAou9myWksbhsVlhKnuoIeyKDrovGfIPOyZR\nCEfy4y6gEMv6KMwPTgi0Dr7OLGYGdNv2IEw7jT009DtPVdWWx4aAfsfeJKUi\nWCm+3wMrLegGKHbs4WC1ENyDO3WDyPMFkCU9oE+JpCnsfd0QTdi+sJKibJGo\nSjQDXvtAkWOdOmblS1GR3yc/68iyhGFeyHRTl12nvuFDz1ujVxa0IwnNbtzo\nOmKB\r\n=swOX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZUU87xARnBnS03Y+xj9qSu43lMnKBh9e/o1B5UAuUFAiAaY173hkDjHw5/Q3LyNT0BVJx38jRN52olor6XxD5IfQ=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.7_1544544476167_0.4371508942416136"},"_hasShrinkwrap":false},"24.0.0-alpha.8":{"name":"pretty-format","version":"24.0.0-alpha.8","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"^4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"700e0dadb85f5dc8ff5dac6c7e98956690049734","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.8","_npmVersion":"5.6.0","_nodeVersion":"8.10.0","_npmUser":{"name":"mjesun","email":"mjesun@hotmail.com"},"dist":{"integrity":"sha512-NmzgnwRiResqJsEHPXpKQuHHd47aKWe99zRHTsbRhfE5zd0xnyvMglAie2agF01xtJ+t6pLChtkm4cCxCd4RaA==","shasum":"522f73193f1e837850030068ecaecbe0b7f7d06c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.8.tgz","fileCount":18,"unpackedSize":521842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcErdpCRA9TVsSAnZWagAAEtYP/3vhLOq7/8lUmS+AhvJh\nnT2saznGMGHFXAQ5oaX7Sb2WZGhRRtQm7t2OPhijOZh2nu1bqoTIr/VlAVL+\nmztFUmyFLGYfNAcnzvqU5MyEOk561KCVVRZ4tUrR1VYR1kF3yilPnvnl0CH5\nHBDklZd7VMzcUrNGpxe1oJYhkSCqXeHg2DkB0b61rrIIjvzWx2GmMt0wjlHX\n8l2g4A1BJpwlJSA5Kf+9UaHIxJcpBcd17AIZyM8dXsTKzsHQppMW6GSnmVrr\ntznQbJdO3/fCgJobuVlOEd09DsFwLHp7852uxNEc2R3birEzxTcq03NWl+/f\nCrmPmK2HfuodqnjfxCqZkY0TBK5YX0hnV4DTLMl33fGsW+bzv0Yw0TPl2gXg\nhjRdbqUMWkC/Lbe40meq9ilX3Xc5ReowO2NT/JCCUyhiz2AW7iUxBZnMAz3h\naJUA8sEyayAmOWNvU0a3hs7/3H0CBTc4/JWiXZNVMx+W5bYDWYxIXLGWZHfd\nf0hIC9jCjm0rCdESKqauOm1ezSAbGU9rTCRkHtopP9Ulapvb3TJLIhSPDxVU\nt0FNEwJS5Hz2uIKojuF1ps0ubZmPorKS0zI37tmE6Xl0fklmRsDJbqLFJjmR\nWpdJGrgw3q0Imu2/xex1Bmr5kuePpkk/1dUBwue1/LpaW5+98zeJNYklRLhP\nx9wy\r\n=Pvjl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhwV6VXXVibUDrjAs912WtluC70t8GH9L88Ji1PzDk1AiEAiijIxUpndf1ApNJJACrddGJdSsqKUsLvLnga8UxJE4w="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.8_1544730472585_0.11588537364178064"},"_hasShrinkwrap":false},"24.0.0-alpha.9":{"name":"pretty-format","version":"24.0.0-alpha.9","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"c7caa7ba5904d0c61e586694cde5f536639e4afc","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.9","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-FQTU33XZI4pRHb6JlLrgLEHyAA4sVWneyc8IbLq9s+VSpUEg3kEvOl5GutMbsP/lFVxXbWBkyhvGZKl3YWi6yA==","shasum":"d01a940d5c9a8bd38315f2dd3dc971df8547b172","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.9.tgz","fileCount":17,"unpackedSize":392262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGlT2CRA9TVsSAnZWagAAoCsP/jBhkdk6sUyLDZUCQQvd\ntuuTqWm0EDkLZKuYMcGTn+xjNLuuLfjwExOk4RBzsYt0W6dpcI/0t+NKbduN\nuZkoJBwbgFkeiIpzMSmnWUVwChb8CAOb3V+XWoxpOEi7oCivvirwwt+kNAGz\nYkFVqsz2vEOL22+xAHyyNrWbGKCatVbc+a56YGG0lFUSc35+Vq+8fhzeffGU\nzZQUytRZrKG85Azbq43G6zB40RDTq2rloJNAQDdbe+e+TxYMmhhtEtof5Kue\nXBTLpHgBFGWklhYtmA84ApWIqqhYb0AT2vF9ROGHHEvjToGAIQNpRcRNq5IF\nZGyq9wYOj2T+LuU1KEgGN7Gx9H6b2oSYlRW7jhuhxrIGFyJ4MyC9P+lCpotO\nJ3U8Aei8paBoSTEQ8W8KI+6+sbuvnZwPipkBcS/8yhxYqm+H9Y9M5SYFK/U7\n3nJv992OPD6IEf5hsSHmyr05S2Zaku5ClftmqnlATq3kcyJDbGgN+a/iI5av\nNb4OgUolFxV8VUEHv0kEgCUceFIZ/zq9jNfM0LlA57QgSKxoYWIjiSdBDrIp\nNx8KNNbBtonW5XE8NQlXor+oLJEV3HCoPlP+zPEozLWlgsnlhIaFUa23N8N2\nq6sQf/XbXz+vpSr5QjYLGpk20VQpuBB4v8clRSJVvqrxnBP6W9LPMI1/nhqR\nHqJk\r\n=EjML\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwSSFbn7RCS5+uNaslZsMa0h6Yq++ULA9DmgUxUJK2zQIgfpFNNLyvvFXrSvOe6rgGQULmphlpOF4H6n2j8zrDkuc="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.9_1545229558375_0.622054766681222"},"_hasShrinkwrap":false},"24.0.0-alpha.10":{"name":"pretty-format","version":"24.0.0-alpha.10","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"722049ccd66947d48296dcb666bc99fccab86065","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.10","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-yIn+Bzkggxxboxhk655bjfI98x58fNk0NKllCjYVFZ1wmGWZ5G8w0Sfzt1pUKzFA2uFnOEccdX7+AB3IPZ9fzw==","shasum":"9e6b234714171b275148e36ad6524c8b6ab984b5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.10.tgz","fileCount":17,"unpackedSize":392238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNimfCRA9TVsSAnZWagAAKY0QAJ54VHFjcYFQF/bfSdnB\npNQrWnn2iYm1sDQ2GjstIqaZKI502wUdfDBBbxJYUv2cDGgYpQBGZV873EsQ\nejks6Oi9vnfWzcA+IFZiLkGf8erA/XmKz1ivSzzqXESiMoRaabpR75ZJb1uG\ng8A0DFG517QvYklJ2aXv1Y50gSpm1MNJA48qi0eGvm0WMJex3oGdcHklMDpv\nrmxgSV4TrwkKxtU/T18OqArnHdQOKKPPhx9ysErS1hRDOiGoQR4J56I5j9+C\nGD2TmUkUyRQ3b1zJ3iMFX6cb632zO9eNO1lFcfaUllAiid7SqcyLIs0FD5d0\nvUkpSa8v50jBX6RRWz8q1eKSGchDCvx/xwZriq7X7yXK3ZLyic1f68l2zlXq\njO9fjkOfr9NZgXRGCgbj1FIiiJTsqBuVdzygrLma/tDePwrSs5XRirr3PA3/\nRT2wR9gOwXr+9vVmi6fR65P02YDJIzEDxHULaA8INIqXaOGkvdyrHv6Y4wH0\nQFpqctNskpKPm6hfSI+HD34sDJByYCzCF4pe7yP+7mptDICPP1zl3G1cK8wF\nMzmS/DC446P6bmWAc43Ru60VK0fUK2U/2WwQzL6ceGzt6Nac6SPQQ1dibot7\nO9bOTWNSio/cV7Z50BtTJxADa1Vcrt7OsckZVXy790j1HeleYLLoqvjzpFeC\ni/k3\r\n=XD2q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3v3usg0BfM0Cf95trDPUSG8X5ObbKR7pt2ggwREQ18QIhAK91F7D42X4VfKlE7vB0sR1ubXVkaeTc0ZVlsBfptfhD"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.10_1547053470936_0.439009740803185"},"_hasShrinkwrap":false},"24.0.0-alpha.11":{"name":"pretty-format","version":"24.0.0-alpha.11","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"6a066c6afe2ae08669a27d3b703a6cf0d898e7b7","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.11","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-dTLUCLYYV9RkULKbFg2U1WFsKkkarrdFtcvqirjf9EqEEC46rII8v98YlBckZk+XL7USsipKzWULuiySdQlp0A==","shasum":"5127d0bf9f712e3c9f5cc5df5ae4a2fc46dfacaa","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.11.tgz","fileCount":17,"unpackedSize":392022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcN5BbCRA9TVsSAnZWagAAo0wP/05Ce7KL5St4c4qM3OwB\nWt7nZv/PIPXaBKSyJOJ35hgDW08P7NhyNfIQokceYx2/tKRVu4jsEkpQTjtq\nRo7ip7pxl4QPleXApp8HGE8fkQaBpxMFq0YNSwq2vOSn/XM8Zqt0TzqeI9Qg\nptMkncUZ0gFm5GezIh1pLKNj+4WhQKDLh45XyTVeb/uM0WHvyTVRZ5ZVcOsF\nFFyMIzw3vRMGaXdeh9pOYWqrdsAN8NNC+vaBXGd4dDQdyCIobwedkgI3SW+4\nnqM07nQnkB8hZxbCUga26Nt8J6nbNJBlJtU87I7ujrPcyDNreKAY+JvcOvgm\nOjthHgm8EeB3sbHVEtPJc0jRVJrCo54vjUD3y5jRt/YTOGNcgoSTM2byTM+m\nQ/iQupksHnTI3jwV2rpxJM5Ts7L+NBIQdwdke9lD0WbI9JHK4KJFZPfhmtiJ\nrEj+CIGO4sqsg8X+gcLOJkwY9/thr4ivkNKAwHvIjdyojYDyOe2tdnkLeRyC\n4Sz4yn8NwbNEjdib6qzX2wbssBuQPoqZg6yOinbTvjcj5cwsklRLAlQ5Y0Z0\nhzZkfZhqBHCErp4p7NShQvsx/N8rmtxdIwYx+Pnvwb5LqJEFAsfehOlpUccB\n5uPtljiu/4jhaW3gd1FAwTShw82G0VTqnuIC4+kueW58LLMgwEOLiFNfNpKV\nFukj\r\n=Bm8G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDICpNB6RgJz9VNL3G2BIb6JXkRdOkgj2LqVBhz5kF8gQIgQPb0DoE7ZdmKaXEGSvPH4u2GmSHju3ALuTAf4GdXdMw="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.11_1547145307057_0.6328115400351251"},"_hasShrinkwrap":false},"24.0.0-alpha.12":{"name":"pretty-format","version":"24.0.0-alpha.12","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"4f2bcb861d1f0fb150c05970362e52a38c31f67e","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.12","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"dist":{"integrity":"sha512-M8gO614z38RgJSbOp6J8havxGPms+wen1oVtK6Es4/GS3coTO4mxY3660/qCaWG5Mj96nl9cgshMMfPqW8dPVg==","shasum":"eb3e3ccadbe7fe823bf5604de9e123abdf9b2d35","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.12.tgz","fileCount":17,"unpackedSize":392022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOK+/CRA9TVsSAnZWagAAiioQAJg1fiyz83J0rEYAeAqo\nccxTvZp/DzH3K9JrGNlp4w/aVzgnXU1Mybo4QO39orFiIE4ROU/hCMtDdC7r\nCHe+dexmPJY4UVI3Ul2k1SIrOaP4ZBU26RnTuCRbjJ9gsquxD/BeEg+xyE5N\nJUh4pnvSPqKN4YEyhVJeqA4IAI1N6Xq0vThnVMm9aOLJFf/mqL0R+r2abh16\nZQIaChgIIHKrwXTdM7GT2WqXBIg/HK2+PYnMBMUzaw3JjlVqYRpjDrbWrJEP\nkpyxZxq/6ejbsQ++rnWZBxmOLeLxceihL96iuYJjKwZO1zf5AinKdmUSFBW2\nXa+keZGkWYBx+T6p9PGetgsVWKumiSKaJg8R/N8x4a7X3lIypimc/wqZqfU8\nRqEfK66yuu4Wi5LZbCbjQwx4DZQG8lf89znSXW4NADysxGdMtC0kA0ThBjZg\n3eBNkDeCNQMRhE8I6gGZ7L+anJEl/QFCwzNUUDD9Ddfs0EybgxZpL3TIvZWb\n1F1Rt61niBcUNucGpX0kFvbLS0M1YS4ilWCWO9CeRoDT0PlVo1JvSx1buNDh\nQjuw79hgg6Lr3ZiEuj9/YEyaffICNma0WHP/TmDDpIkUqPYwKh8VOcNZpwaw\nv1OvM+9C23RgxET3IH6HodmWXpojdeHzM41HdN93owOOEnrVZuFig641mWwf\nbVYn\r\n=J1sm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmZ5RydDVyPK8MvMKp8tKRreKxkdgDL1oCCpQ1/zRVoAiBb6JN0aOp76Ne4m3jGWTqGID52pTvea8mN+aBL2Uhdxw=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.12_1547218879190_0.3313568015150097"},"_hasShrinkwrap":false},"24.0.0-alpha.13":{"name":"pretty-format","version":"24.0.0-alpha.13","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"6de22dde9a10f775adc7b6f80080bdd224f6ae31","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.13","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.10.5/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-4wJ9B0CCOtBlgZ//zI57cbOvaWA1iEfngae4gHRj7ibHrUTF59aFL6GE2QW8ppX5B3wGO/vFS7jR8Wo9gnRYng==","shasum":"f1bcbcbbfafd4cc1d4d871047d56f0fedbd030d6","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.13.tgz","fileCount":18,"unpackedSize":573400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSIURCRA9TVsSAnZWagAAWUMP/2kngC22iZZ3RtJaS8Ml\nAZPS6eUYx75JbHmmmJ1PbJLKWEr1Qo+CkOOtXzJkulj2mdRtz2Z4LXA1iztN\nhmhDqKn9bfHiJpgeuqFIby/Sd9KtQyiaorNDB/C29MbonJsRzszVfPlAA7x9\nqvHbXk2mE2dxO5IwfrH+xefADSKPMzL15BkIs91/45wwysFbQiT9ZVdy7O6S\nMAx27OgU4Y3S4VDYGezsNxABEUH/jaUIAxwIeb+j+fdSWXhLSffu7FqHP+Ki\ng+t8QiciSjwps1m+nRCQetssPbxvcMCQusA6g1NQOEFE0NkOZxdlKJfZYgW0\nrREiPzLCzqR/2A9OqYvKNOWcWQlfn1zh5vYCARjygpeIusBK6XKjsMyZB4lz\nFbRSjd30ZzUqDgwZZAQe4qLXfQndcrdccYe8ZNC3GApS5nVfpKwL+iJrbX2i\ntfkkGRMCS8LajGY5zarlEckIEtuch1bZ+siGOgHXLxpaZuEoN0kxeQQxCuEg\ncbPpH2sf92hHHRbcW/vlT6ORkvku8bwMjL5YI+hqWwwDC+a5ZWEBw4Hsm2IW\nZXmDFNSjCTr73qaQah9hMTS0TaCugMFy43magU3Q+8bo1g+uvh9uMEZhVfrj\nChdhMghZCssxZeZbWw0IL2eEHmHSItQRjG3q9tmt+xTXcMm5ElpjHoXKqv1I\nUGj0\r\n=Pmif\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC16Gukapf0NGdjnsp5fmaLkIiCf30Tkr42jGLQ24Dz9wIgYIUihEj760jJGnhel2bRENjF9THQrflV/1AngB67qLM="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.13_1548256528812_0.6154443589171268"},"_hasShrinkwrap":false},"24.0.0-alpha.15":{"name":"pretty-format","version":"24.0.0-alpha.15","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"28971c5f794330e8acc6861288e6daafcd32238e","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.15","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.10.5/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-wQFrzHKJviGRRS5etUeaQentUEOlbkMS4rDAatCrMNm9w6OunhOFlWXKfxWmoojBN24kZqlSoGz/FbzcNXfYZg==","shasum":"b677da08e7ff63beebc2c7cc8cec52bdafd44fd4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.15.tgz","fileCount":18,"unpackedSize":573400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSfthCRA9TVsSAnZWagAA5gkQAIdJZWPrL8U343CWMtxB\nOMTZOh7icMDAfY7MF7QDG67+YEbA0MQS0yNbufDJubpZp4yTAUwSjLxx1LF9\nlPXBlpbIn+7bsBQK3wOSnXfk8oiCpxLL6wfNUcxmUpd2yXg3+BgCG9VNebYj\n6CYjy3pprHfVLkVjxR83wvldLi1cZYnSy3PBAGnIHbzXizEeNIap87jmwCf2\nx3xsy+fio9vYdSQzhuTsjFG/odiJn/jSK2JtbuwZX4re1KpXzBXpjO/p3OSz\noZ9Rxd7Vkooexvxqppe7VAoSug/dwYVNMpIKDtky6NXRrnFwrFEA/+7xJDxL\ntusbdww4gTAts88kflsLNW17T8TiwuT0PTs3kr4S25FojCJZjs4+UsdKsahZ\nDOSE8xLj0u7MUzCQkaYcKD+XLUftw3IDVEWLvxWnWQMqhC+gH2y4JBe7Tyt/\newNbkg/+HYCuK9Rt1l64b+5lF6/wktPvs0WF5kfqfnREXRGgI8VPFGy/ETVe\nQ29uc2Bni5ft/JenGiyUWMcPa/OdqV8pRnllSVCGmamg2bBy+V0628dam9ZX\nM5vxAcMnygW7p6Fr+uaZ9UVMR+mQl0h5nWscODD01C6ELfH6lO/61QTMIVHB\n5JJOb1aNwG5We9uSEx94I4R0fBZ2HopLhyKD+HfV/E3fZ20rqyCNzDFTLec9\nOXHM\r\n=ktVt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFrcrznCf3A5g26BvI749Z5mJOMMTzJjL/iRo8m1YftFAiEAmkgfwHo0uh1nfj4EjRR5PRT4OC60EKiI91AwyvAuAck="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.15_1548352352669_0.8565869268003767"},"_hasShrinkwrap":false},"24.0.0-alpha.16":{"name":"pretty-format","version":"24.0.0-alpha.16","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"634e5a54f46b2a62d1dc81a170562e6f4e55ad60","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0-alpha.16","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.10.5/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-PyYQTFgN2Uy8idAj2HUlCAXFkffLBQhl8eUmNnR+UWPbft5991Vk/fnQaGnP3K+f3nbBBGdewhDnBsxKXMxx3Q==","shasum":"cb681b24c5520c31458c4df9274f6f1f68815f99","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0-alpha.16.tgz","fileCount":18,"unpackedSize":573400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSxIsCRA9TVsSAnZWagAAdY4P+QHCCW8o2OsibKE0KJWY\nUOffzt5SuToQysh4aaDLqItVBX5L/9cF8JCkel+3AUeAQnsAZrQsjzylq2Ps\nUIOAbfc7c8sGV7/mMR9ttOmL3dOmpTmvioYq3Xl+M2w6VYU8n/sRf/UzqtPK\nFQPfiRMN5CG+WE6o9/aLtcXYEoStiYv/aXLu1XVLt0yCCkJc3C46tdig82em\nA4t1XfPfJswj/jWYjNGZ1QF9vVILP89CspUHF8I9m0yvjkj2264muCkFsRrL\nCJ/WQgn2Rzzc9EFy8ittV5jx74p1nqmfRtnQebHubDV6VwcWrmnwQlvPaDzV\niEHQE9rcj2eQnTdbClc70N1A2WWDqomCSg89Aprnbc81tOdHVBO+hc7a7FFl\ndUr4Ehq6WIlvssW26Q13Vzv8O/RqR1IZoeEo5EdzZdaaxTiJp9OBkcyHByKr\nldoKJlewx7RxvSiCLjOWEb6comz2kXWb9urDnDWAnNW8Skyu7ebI642xhyTa\nngJYxEDbzq5rdjPXb/sapMTM/PinfkWXTBdv7NSN5upyoYGR/z3JeXbOlx7O\nFWPR3Aum/w9TkA7ZMeFFWCnzoFoE84PYG57W1ZPHEvYjcxqErecxZPrVyNNp\ng+AYwairJrI5NiMFqJw5rVBgHsaE0hyeStOnwu7TdYPwHh7PAfdIZYIRQkeP\naCJP\r\n=btgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzwmcL5HahccLSfOWNgLgd+JD+kWnqV3KLEzTtyV1G6AiAWtSzhFsWxmWeUiUgGNc0VdtNPXxsRoP4XCLshe+oL1g=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0-alpha.16_1548423723701_0.7082266533575321"},"_hasShrinkwrap":false},"24.0.0":{"name":"pretty-format","version":"24.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"gitHead":"634e5a54f46b2a62d1dc81a170562e6f4e55ad60","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.0.0","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.10.5/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g==","shasum":"cb6599fd73ac088e37ed682f61291e4678f48591","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.0.0.tgz","fileCount":18,"unpackedSize":573391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSyWbCRA9TVsSAnZWagAA+N4QAIcRq1APgOW3er3tNwoe\nqdFyMFDrLXhrsxfy3h++Jo20xzQ4AdcBtFs2SVIkeRTJZV1fG6FMw4t+/GHj\nUc0PFpBwrzBjX+vhgUOM/6Ct0pQ3a5bdT07mrqGbaTVcGfVNSjc65KPhdy2n\nf9Xs85f4453yHV0FfupVI4++YlNgymKeI5d4Ld4KI2LsgbSNkPUo3wNC0JSS\nsQwItsMWVK3VBp+uQtUyQmJ3D/qkxdtSr1hTQDEbtD0f9za4YbX8ITHnmhYI\noicHC1SyKrgkcyORmnyyCFHhOCSUPBML6Z9H3d0tdopavcxcBj1ecjPRj7nc\nJ+fR9F5YV+o9pRfhLYCOtTVj+wSs4scr+V8Krlpzovp2nmz4Om/jUZLMxyKH\npZ8k5rCZ6DA8L59GUhX6mncNXAtbRrBGuagVQxNm8LOjUe5LatIhI708fQXW\n7V8ojeJ7Qq6OSc+5YK7ofwYyQ/25S/xbffECb26kjqIrWX+YRErKU1u/KQRT\nFu0jZwwWaywZaekO414DAXFccAKf+hb0ZG0gPVYqMNEzNVlF14xD6Mnq/B97\nPnRFIkUQbpueLIl+ZiPl2jmcUv90LRmSQeQQudux67xnQZfZ0hAFFSSvH6oW\n+YEafy304JVs59SG9BQQ1/n+ZVwaULzuLBJuHw4lE0kgCRT2Vl4O+qpAxffe\nD2eD\r\n=tLhU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClRd81hqmrVnLv+62XmSIAJS8MWac/ELRE7+N6a/B4wQIhAICL5V+foclJHXipAfkRnnubcVipZNkVUghQ2ym7fz7f"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.0.0_1548428698756_0.3964871886317509"},"_hasShrinkwrap":false},"24.2.0-alpha.0":{"name":"pretty-format","version":"24.2.0-alpha.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.2.0-alpha.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"800f2f803d01c8ae194d71b251e4965dd70e5bf2","readme":"# pretty-format\n\n> Stringify any JavaScript value.\n\n- Supports all built-in JavaScript types\n - primitive types: `Boolean`, `null`, `Number`, `String`, `Symbol`, `undefined`\n - other non-collection types: `Date`, `Error`, `Function`, `RegExp`\n - collection types:\n - `arguments`, `Array`, `ArrayBuffer`, `DataView`, `Float32Array`, `Float64Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`,\n - `Map`, `Set`, `WeakMap`, `WeakSet`\n - `Object`\n- [Blazingly fast](https://gist.github.com/thejameskyle/2b04ffe4941aafa8f970de077843a8fd)\n - similar performance to `JSON.stringify` in v8\n - significantly faster than `util.format` in Node.js\n- Serialize application-specific data types with built-in or user-defined plugins\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.2.0-alpha.0","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.13.1/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-DIP/yjxErpfZtVj0KqQmm0mMFeTXNxRvDIIuxC0UUaUCmB/0FkmxqK3nZHiz+2d3h4t0Ip9jZevGTee6wOvktg==","shasum":"2002b94909973e765d7a05d28770eb17ade476a4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.2.0-alpha.0.tgz","fileCount":44,"unpackedSize":596156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfovTCRA9TVsSAnZWagAASlYP+wRIBdBq74lZPK8TPK9+\n+YDUGqxHM36ZtYGc1u+zKprAq0hW+IXl860gVLkXNwmbY71mPRse879QOvAD\nGsX05bLODWe1i9cCXCIhMTxDSdNwvbPfUFoLmteiR0LYdm+hSA/VgQ8TGNvb\nE72rKzQ5wyzij8NVQHLU8leKLFv30jft6qHY4g3QmOUHM/iLAUW/TNWP9qle\n79XNdpcGkxkdHmkx1VKoLSK2Fu7MbXoHZQNtZNLGQX5aPS3UM8msr1Y8JgC5\nrhZ0N/ajR0r97I6b4rb0dkw6ibUdObsSzzByODZ5bOBdWHL1Jstv4iD1X8lt\nCVfuLjw+6hjPa/ijzKdevz3173r2c+O4TOrSRrbW/ef3Z9Li+jX67jPw1rBk\nQiR9tGX7QiM3f5lUq7+nPIR5sV5yWZK4A3m9e/kWbrFza3+3M780w8hiIAGa\nQoTGgsuGWZOckGwih8wQMRhwDFRZ8aQzb60Dxw2jckjnisL6UgvKdqS5izGy\n8BZAsFMXTeriBZrosSWbZC4whSKGRrAxvqvi1ttm24wff+4kP1qNjHK3LrfE\nrfxcTJZDcafcnr8IEbaydWCOHU3wFGnmJ4OAn11cFhtgkhOwYx4oNf/xl0fq\nj4l41c0yk/yy3wmOymP2CMbds3nbaSrIzNY8SO78jNADj2m/MB9U1Ihs85i7\n6mgC\r\n=zSqR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVDKnmrmsXnEzHgc2AhDSg+ktpBqsTQCdec8I7d7eyKAIhAJyKedyUsDaYneNqRrpAVnlhZ+C8i24UDoDOJshOiwtR"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.2.0-alpha.0_1551797202724_0.37915218536956163"},"_hasShrinkwrap":false},"24.3.0":{"name":"pretty-format","version":"24.3.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.3.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"3a7a4f3a3f5489ac8e07dcddf76bb949c482ec87","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.3.0","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.13.1/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-oz+EQc2uda3ql4JluWTWEQgegTo9cMkVcqXxBieSV1opZ4SE1TKuFBDoSk7jGOb08UgwQVHMkVSINB8jQyUFQg==","shasum":"e7eaefecd28d714fc6425dc2d5f9ed30e1188b26","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.3.0.tgz","fileCount":44,"unpackedSize":596140,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgRW8CRA9TVsSAnZWagAA1pcP/2AmdxUsL7zAbLrLD3+p\nT7lORL1r2hnc7j05Pkir+URB2Svpcm5XrU87gPvIHBa8xQYHBtf+c8R67AzC\nAZ0sSfnsOQ6nNB8Xli7WS2S0aQvHOtoz1aCx7hkwgtbpeJEhdzKnh8fdeq4z\nTX0y+rk5ZXvVi04kvruX7uUlhAsgDooFs5R+WaUH/LQgR8MwzFF2KKfbCW+F\nUcOwGndt1W8tNOi0DgzKNsrYz2GApHeGu20ttQmY2TXigG7jpzLG7oolhfIG\nSmN/DucsbEzZ5Z/B8M/2Du1s/wr8rDDYJJElw75Ias1WzosY2y2rsP8VE+zF\nh/AuT+gINmH7hjAdfmrWNlq3izPHB5YjpLTHFKkxwaZXMC9V3bVGSiKW4qWD\nR0R5IFvzcJOU3Aphe4XMq6s7F0uQVoBwBW+h0B8MtxZZt57NOIBhM2OibzQa\nsorrxUogYo2V7ljrTMP9jY0zod36/B+pOX8kZgSC9XvvmIjQs1kTMFbITdBX\n3QTty66Av0RbwC5I0wh6wIic5F9QpaFt6p12/1uySJSvI6z4zcaIMKhwbdYR\npJWOQuI3IOjf/hbXaYPrNy+d+Ixd7wSjqHqHkcQt/f7AywTZ1g2dOC3AfId0\nLydgBjAX2wIjHxPV4jyninSdfLAPtnONilsuBww7BuLF8F6PmYZGAMGdlut8\nqe7p\r\n=5UNq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSHI/hauUi9hi7gCFJJVt1QnHgwO9g1tpayMj3yCHWpAIhAN0ROVecaCnLV8v6MuilaflI0TaT7y1nClr8ehRt6Bgo"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.3.0_1551963579497_0.521788719833167"},"_hasShrinkwrap":false},"24.3.1":{"name":"pretty-format","version":"24.3.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.3.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"65c6e9d5e398711c011078bb72648c77fc8a8cb3","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.3.1","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.13.1/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-NZGH1NWS6o4i9pvRWLsxIK00JB9pqOUzVrO7yWT6vjI2thdxwvxefBJO6O5T24UAhI8P5dMceZ7x5wphgVI7Mg==","shasum":"ae4a98e93d73d86913a8a7dd1a7c3c900f8fda59","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.3.1.tgz","fileCount":44,"unpackedSize":622603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgaVVCRA9TVsSAnZWagAAz8IQAIynpzqNxGvuqNL03v6s\nhIyHV/m4ThzMQmxaenx0vCPbYz89P0yICDFUxlYr9NUros7pGnzaRrl5xeg3\n3GUp4AZ5GYvEKWES6QRQoVp15Gu4JTjgBoxD8DiDtQJHS8LbPmPC8i6O1hZu\nmUccpWA/sM+lPl5LWzhepcQMwvoh0we3S5jMUY/vkCRZRFkoYGtbp5QEn7Hc\n05CQRTt7xX7e2UGMCCJJk2MsZU+GfDZEcBi28jgBqA+Glq/+cYhENfagdDOC\nMBrSnCRn4WFpyIqI6lqgz/3cOCo7C25nEI4Pg8tNiD/PFCURplV0P5I73J+I\nwpDaetQ3ZR/CfPYKjF3mzWVXPQTMUu61gWasQ6b1D6zzm6/ytUp8dtYZJFWt\nLghaxmYIh9tf9tAcPmbuUSeG9n3oIFceRtLAS5rpQLUc0ngHTx03wfOho0Wu\ne7FzyAv4O+HUfTLaTASaxfeoGukjmM38s6baQ3dB4fUKKXeCAnIQpvctALaR\nqIvd1i3rZ+3uTwDJ6UFokCnTBgOMeCZWXR0NddcGdLc3IwOos1F0fJ1UiPh4\nTYGuSLhon+Swa6XfI8W7jKKY7qRHPJnXFL/RE1MZgeLV+sJUN2pmOdjZ40AR\n8tYiajZdEtCyAxOr4dNnIBVKSRE/PU2RqY/gwFBsNU7ChmCwzeTziu4Pdlkt\n7/rm\r\n=Jipz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrc+yStysXaRXk1CS2YSGJGI6AiMAgzmDz+cJEj3R/9wIhANk8fhl8e3KJbItVK1DBiIBwLnDoxa/tCu45C4QtTj0W"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.3.1_1552000340349_0.3039072455196825"},"_hasShrinkwrap":false},"24.4.0":{"name":"pretty-format","version":"24.4.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.3.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"a018000fc162db3cfd0ebf9f23fdb734f05821a6","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.4.0","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.13.1/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-SEXFzT01NwO4vaymwhz1/CM+wKCLOT92uqrzxIjmdRQMt7JAEuZ2eInCMvDS+4ZidEB+Rdq+fMs/Vwse8VAh1A==","shasum":"48db91969eb89f272c1bf3514bc5d5b228b3e722","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.4.0.tgz","fileCount":44,"unpackedSize":622603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchnduCRA9TVsSAnZWagAAtRAP/ifWu1s887EhYW/Z+oc1\nWZ3R0ZkfG23rSDieHJ2/Z6n31R297NFEPUK0mcxDk1uyurTXbLjD3Y9m/2xE\n2HlecZ8sOMEfLvxjg7TOup7IKGREQCjxKG6UeZURfnfv+4SQ4tcoc4xgVZmL\nBy35+RV3hGR0AgCFTl61l9YOQ11cMn46kRhsylf5+lMjgQ3MxRFAsQhrVIf5\nYr7Mm24DWbx8vdOCtMkmMMhVdghxRARBcKYhPqw6gsO6A8ioFVuAFWh49fJ9\nWxALtwV8gRW4NyDFT978Z4QHe46f1No46jrDJDzH9l5bLq/xEELtpjMTOAIs\nIEumtnK01Xl+zjsabGn1gVblehwrJLqrUFUduSOPbq36h7cb6GJhnjt3tmUO\n5Vve5lovRk/Ko6KrjR+mepyg615n9B2wrRKsJDwrgulEUb8vm+oJjoSG5pju\nKG5zDzPCj7IvxSXnMwcFSspswgQT5pAC/hJvenDfy+4LvpKvUlvwlZknmzN+\nPQoHr8esr2VAsPjTChEAkFpI/us17p+g+zf4wpURFzygBXNjibydjrtjGNLM\nawz9GqPvRuq1CwvwQcdiilIJGpxIoJsScZqT+Zr/rqgKUv2ySukB+wwmZfiJ\nDeK+4wEmG62THd2OmK09PCvkZbEaSYnoJxpSlUKwYccvhzqCOWZ0KYHzA/vP\nwGeU\r\n=ecFg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdc8lw3DMq/3DfsFV8PvTehXtyZ/jaYNZwvDsu0+eXZAiEA0bxox2Ku4jEGDV9f4tsuGmt8BgCBYu80POqJSM3RVOo="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.4.0_1552316269282_0.7008450752930335"},"_hasShrinkwrap":false},"24.5.0":{"name":"pretty-format","version":"24.5.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.5.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"800533020f5b2f153615c821ed7cb12fd868fa6f","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.5.0","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.13.1/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ==","shasum":"cc69a0281a62cd7242633fc135d6930cd889822d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.5.0.tgz","fileCount":44,"unpackedSize":622603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch+AOCRA9TVsSAnZWagAA294P/jD2ZGgKwbOUWB0zKthC\nu0sLGOPQ2pBXqRw/H0hrwhNbF3cFTMVTYnC2lSNBnYgeyrJXddPgjKZLdLIJ\nb5YWEYG73AxzdrGv+lEytaL1umkiw7QU7TwdtXZLz10NeREBplC+d+ogJu0T\nFjgcmb56ccCH09PAXRZWuLBC/N2ovXO2djQp7qmj3FVO3OSgWFxtHQWyuzRK\nfK9m9N+krTwxIG8QEX/hSgIMHMEzhMzuKZAf6+q8kBxDF8dW404QeybZ8zl8\n4dhhwqMcm6oZJ/LqRaJ7BBaN8QvFmJTDtLRvnQjrFo/dzni0H1tmGnokg1cd\n+wIuyJJDtx5kY+VKdAOOZfkeJaxLATVwI//l/QF9E+d0mQm3f00kua2QmVgg\nl9cMYCVKTni5GSFB6MOx5YQ9q6lo9epEI8W0Il4AS5PC+MSrbOA+cySuygu7\nCaQuHDL9kviIydwVSFGPkhnBvA+el8181co51+s88PQYUxZT476ViMPmk4dV\nH51bUGV7t8zhoqSSVbLOFyyZH4rORJUvnIVu17lsBAP7nWC25b2eiQPcafAy\ntIaGDld+cjSYPZ7lgwrVVA2tcqp5OWlKTzpQ8pCqCjk6YL+BdHpMKjXvcjDf\nGRiTs6zddGHhs3bCGS0/fS2IC4jkMhfnnltSXkGPsWphU/rb2ES15Q9vY6fS\nbIEw\r\n=DjMX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNLS7Tur7dveLgWdc/OS2fEgM53hyHL6cifGcGLKwTNwIhANWtnr3vqOnLs1aQaO1a7AdqTT4SFpUfA+Lso3N/ZUjl"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.5.0_1552408587076_0.3403435260679679"},"_hasShrinkwrap":false},"24.6.0":{"name":"pretty-format","version":"24.6.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.6.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"04e6a66d2ba8b18bee080bb28547db74a255d2c7","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.6.0","_nodeVersion":"8.11.3","_npmVersion":"lerna/3.13.1/node@v8.11.3+x64 (darwin)","dist":{"integrity":"sha512-xEeJZFqXgvzSEMxoZ3j4aTaax/pl1upVsfMstcIC048Id84Ve5aqX0WkAta/wFIBLDRz6Tbuj6HcoBXRNk7rtA==","shasum":"66124fe5ea5c4d473337a204ece220e8fdc9806c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.6.0.tgz","fileCount":45,"unpackedSize":791376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcopAPCRA9TVsSAnZWagAAxY4QAKLe/nkYNTng0Pr07MrM\nCPddOLHI3wr6NYqIysMwP/dTd6dZwKBQjoX+qmSrVZzyePlLmmqpBabZuO3h\n2KVto2/cHcQPEN3ifrlGuEbpSDbskkjoITnm5dzLr+GeyzK0PlYScVXHR3ja\nzAqtaRdSTvNRsiaF7BIuipuVv7gOAmiFId13JTB8x+hb3Hc3JpvjFSrvBmgw\nZei+FUFHXWzl2otP9DHJFqLNHMBZtXMmmulmq582VaoQQpK5bx3COsYDK4IC\n+tfl0wpQOaHWbqOZcYI6JPrWOjySK1P5VFY42+hxgnGx9vMh+U1kcS1suxuF\nFfsvJMeh4rnhMvDdIII+2EtNxENZDwODjFlrKf4C3vMpBZJFjETTw98s7ZWt\nqChApqo7ncQSAC5jb/iuY6mtJZ8qc995W7f2I/QwguzDUa3+96mM6Q7H/N3t\nXt/v6nR8CKnkL1EoagzAidWFG1kT/2zuixfWW510yD9XhD0ZJ1WBIZhWs1gl\ngEv6sWcJ0pSOK2ZMnQyucoJvl+0ajqsXP3ivHIIm/y611wr7npDJQyQoWL7+\nt1OQVi8BzlnUg9w/bk5guJHNxUoBSTJRBV7B06D+w4zjF8jg/Of8+P7KTRJd\n4kv3JGFHCGbT9d8l6KzMqMihCbQMRogdot9uRu+GRjYIhAfGB1z4DR43ochp\nCh2E\r\n=UeHv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6z8RXp7k1tgJsOMldl1jGePekxNy7YbtdD/ZlV3SukAiAjmGFOyZ0yHxzNGlCWccutpMLPIdPLfxU/cI4MGLUCyA=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"}],"_npmUser":{"name":"rubennorte","email":"rubennorte@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.6.0_1554157582735_0.10815463953542226"},"_hasShrinkwrap":false},"24.7.0":{"name":"pretty-format","version":"24.7.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.7.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"eb0413622542bc0f70c32950d9daeeab9f6802ac","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.7.0","_nodeVersion":"11.12.0","_npmVersion":"lerna/3.13.1/node@v11.12.0+x64 (darwin)","dist":{"integrity":"sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==","shasum":"d23106bc2edcd776079c2daa5da02bcb12ed0c10","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.7.0.tgz","fileCount":45,"unpackedSize":775050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpC6mCRA9TVsSAnZWagAAZBQP/0NYct5cIFkRC9jgK5tA\n5Ra7ErtFJs1UvSjIsAgtAWzjQX15RSRLaQLF75eTp09mcYbaPMxLaJHxNcDp\n9XWhsewLD0uMTmYbmzLuOWctE9nJeeEPbCVh1nGpOUzHuEqyvtK9ECUfEQwv\nL1Npw4a350N0UwbTRNEXcPDHIpU5+jHwBsWnLfZYVs2KBrS5qSdjUYSdVplF\nh/ET9jR6fyFSLegHjjhwOifNMd7a6+Palxo5JrKysn2fl0rAOihjGbjUKJq8\nIHXmytYLqNkAKV1oBrmsaiC0JxDXFCgbdZA4RArUkKfJL8OUUaMU8BansQNk\n/4yvh7Ier2e9B7xY/1iTnHhLMvGy+le+YWTGljaAUxDuirdIek3M7rFIUe/D\nwMAMdV9yeM96aSKr4/F2Yw2HsypKL7C936qixleI5VbInzl0NTzuLe+OYuSb\nd9pR25lDBlbCFYmMLjnit0TQm7lRigD3otQQhHSmB2BHlM+iUTEYqs0oexDb\nLRpY3CiaeObvBR8D1uFHVxQ8YoSH/GRDjBjqHJsIp3H+dHNRikOtbfnzwFjH\n4Ebc2pt6Meio+cwnZguKuSnZQxdJdQWrqgvcXrFkGLZ06OO+VT4QMpLudxgh\nSfvtK3tLrL/lKvpv5/rcg7eF4lUH0xsAfYOAQosuogBs/G1ggXygD3vGPwzs\nTKKL\r\n=0eeS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5wtI70xlGs+U+GINasQ0uA27B0uH1/7oXXc+EXWh6IAiEAkBLBDRfpoRE4kFf7NGXG25241GS0j3JJaBtXJV+MjFA="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"}],"_npmUser":{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.7.0_1554263717891_0.10220866426617281"},"_hasShrinkwrap":false},"24.8.0":{"name":"pretty-format","version":"24.8.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.8.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"845728f24b3ef41e450595c384e9b5c9fdf248a4","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.8.0","_nodeVersion":"11.12.0","_npmVersion":"lerna/3.13.1/node@v11.12.0+x64 (darwin)","dist":{"integrity":"sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==","shasum":"8dae7044f58db7cb8be245383b565a963e3c27f2","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.8.0.tgz","fileCount":45,"unpackedSize":777296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczkQuCRA9TVsSAnZWagAAAD8QAKNQruzhB2kqd1afY0cK\nMGKQN+EpZ0oxOQgcTd9Kbvu1YEJdww5U+/oywnfFllTp/pE0feHxWxsrMWxf\n1OJJA1XpkX8fvRYUm31QelayY10Q6FDf0muFAXKVxSiPJ56Hc3tuhJ8RPVCR\nQ94+c3+1i8jKLqVUUpmA+JA85udP8fDPEZDZKnoCJbg84qC5Lv9J7FCl9hQm\nAkrzyxF/aNoCcNTWavJzoPXIqlKTDQaMMz/QbF2jXf+VEou/n67y1SBJrCIm\nGejWAPK9I+0Zx7j66sq5Y2jDo8wOAX8kIFr99CwxeVN0xgYilPybOVTRBXul\n7aDZwUoyGbJLR/FsQbjoFi36VeGXb0SKdpqMBHwSgHNbgTOhNlAuBBq+J7Rq\n1FSocmS35D8px9yqP5zWCmAeKi/7QPVuDvcnv9McPBCYYIHyR6S+lGizwZp/\naKczIAypp3tPz1AyicaJnKztk38c60E6p00TPOISn6DHr11gql8hapcCtqT6\nURn2Pa0EkO2t2vCyQG+coLt2yxaY96JDtF5uJ3WtHjKzt90hJv8BqfeztKVz\nHEHfzUrANIw9t71CEestIrcFkp50OPQTqvT0L/6cXf+fKUL3enMmC0Bw6Qwv\nzMLEl7bj8geeMOJ+/OxgYW0K+n6On29tXL/ymyPFqVLHHzhJc3WHnjT1KZDH\nLEPF\r\n=61kO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH25Aa4oDmdmOQKwZtevYKQ0BuUuVnaT46ao8n/IUe3gIhAKXc3VEkwAqzFMA4EHYIyAv2H8ypitKtFgnwFMwMp+k6"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"mjesun@hotmail.com","name":"mjesun"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"}],"_npmUser":{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.8.0_1557021741471_0.5377404816199578"},"_hasShrinkwrap":false},"24.9.0":{"name":"pretty-format","version":"24.9.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^24.9.0","ansi-regex":"^4.0.0","ansi-styles":"^3.2.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 6"},"publishConfig":{"access":"public"},"gitHead":"9ad0f4bc6b8bdd94989804226c28c9960d9da7d1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@24.9.0","_nodeVersion":"11.12.0","_npmVersion":"lerna/3.15.0/node@v11.12.0+x64 (darwin)","dist":{"integrity":"sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==","shasum":"12fac31b37019a4eea3c11aa9a959eb7628aa7c9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-24.9.0.tgz","fileCount":43,"unpackedSize":622851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVkVrCRA9TVsSAnZWagAAF3UP/i3Pq0YrEHpvSYLccSou\n5RGRywnHlTNkORl5nIeTlowBHBjjWmkFaVa9D6ZOTK+/peYZHtr3UjmqE8ft\nuR2bdiNfNK8DtQ36FY/byefd1BiUXmYQWmMNzff6SyGfWj2KLihcFJK6/Kaz\nuBzZgbnV2+CiwtkmL0KtINZ7UKxM2Jq7bZVrpQX4raACyWjyFcIeqHz5wrgm\nRWtHpUZxG4Rkvl/MsSw8Rmua2sH1ge4zUHjfNM0NP5R+V3xNi1tG7VUidn5i\n7I8zcPjtaviJBl+DQBh2O67s8H5pu3h7cR6qSj9Y0o/xGcKaXYLHmIUlYMzy\nPMeFauqhSKQSh3qznd3C8DSmzb0wsNW9KGjVVBPeLotgFGfscrEd3Slz+y6R\nMWGRyBSxdM1B2Oye0XYEg5th+3sWayruoLM8JoWjV/pKGa3CAyPR4lKmcfma\n0YqY9DksQXka+0Mj8vCybGoFOY/jtosWrYRgSwnLd1QKSPopChuJnJiA5ahG\nBzuZ9unw9AjbSLvAVXr5vsE6s3p66IsNK5KEjqphNINqQyXCno9e4lSGVw0a\nxXj/Aj9AGLuhXpOZ6tHzMhu4ey8HO+quBwReEYci1Mcpl4uwa0Lf0H0Xnrru\nwVotFnXro2FqFDTVIDy6dA09gukOrDkx1C6fprYDiDn4UN5VxQybA/KfEzl1\nl8tq\r\n=rnIn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCW7ucsr7PnTLpI5t+sJcb7PxoeKEbS4d7LnoPUOsfDfgIhAO4bZTLBnFxiRU4y7fJcgRswRD/xGGsi+k+dZAFzupoa"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"}],"_npmUser":{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_24.9.0_1565934954829_0.4757742416820441"},"_hasShrinkwrap":false},"25.0.0":{"name":"pretty-format","version":"25.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.0.0","ansi-regex":"^4.0.0","ansi-styles":"^4.0.0","react-is":"^16.8.4"},"devDependencies":{"@types/ansi-regex":"^4.0.0","@types/ansi-styles":"^3.2.1","@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8"},"publishConfig":{"access":"public"},"gitHead":"ff9269be05fd8316e95232198fce3463bf2f270e","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Of course, `pretty-format` does not need a plugin to serialize arrays :)\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.0.0","_nodeVersion":"11.12.0","_npmVersion":"lerna/3.16.4/node@v11.12.0+x64 (darwin)","dist":{"integrity":"sha512-0neOC1g/eAISiEeRzK2QRF/8U5o1EE3jZwuHSc49qYMdCLgckxeK7bnMw31YdbP34zcWYD4nvWnldNZ+S3okMw==","shasum":"d127ef4972649531cc6eeb55c9e0d250350c48e7","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.0.0.tgz","fileCount":43,"unpackedSize":629265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXgrRCRA9TVsSAnZWagAAugsP/3gmLpV0F7Y6y+Z6bs6j\nn39XaMuWHdn3AZQfQTf+p3ha/UaRzanhqUE/orNCCdX5jHzsiPRYSuFBFurB\nEpmIMdq8NhcsMqCnTsBkpIr/bas9zIDvRbJ6s/jAQhgb05qy14YdbaAGmjNW\np/S74yI1ZazdxvCkvbRtBJg8GiaXOyPbgwU9NYKQx4UgvNKfAZCvXQGsSfuo\njvYRhoL1L7h0Q4E8/I69OpN1olc31dmnigC1Yyx4gkxu2uf7+krl6+7JL0cx\nfm9nKN3p78ipWat1qZYFBuV51HN2+2ivz0Ydk/1lWR6FRAfRWqFzvGup9/l8\nacgyWkKllrX33q8Lru/oSVs9UCSlIDcnhNJKoslFXcRJ12EakyjLgvVUeRPA\n1QZbpPWU2c7vo0SnjyV9+S5K5eZIbA+OMTBRbUD4IizfbaWWTZzt7cL6ka8o\nMT58Nm0Ju+KeAeCXONtEHS4oRKrHVOdeYuJGJ4qte31uj9sOlFeLpjzXY0S1\nJQoC9R5paGDtxm5Q5ZK5EMUDsWOD9vTmuyaLGpvOpH93Pi/VYEtPWL1p+5+p\nGpQT/rdS3xp1I571P4fsFEZW6kYIrLgG8SJxrs0H7M8rsnWYc5W9Oms4fg2x\nCBNdNXdMApkQ+vWuQKrHKEZZYLGqQow3uIz4xuyHRHsv/bJGhd+EgX4OMgd+\nYAS+\r\n=RJIc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFiFvcqXpDg6v7+At3/kWUGqDHh821tX8rok/IU5wNEfAiEAyrGiHHbk1IKmHqN8nGk1AuGMzsYeUnX4jqSeQFc7FZ8="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"jean@lauliac.com","name":"jeanlauliac"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"}],"_npmUser":{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.0.0_1566444240697_0.5785760721309063"},"_hasShrinkwrap":false},"25.1.0":{"name":"pretty-format","version":"25.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.1.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"170eee11d03b0ed5c60077982fdbc3bafd403638","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.1.0","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.20.2/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==","shasum":"ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.1.0.tgz","fileCount":43,"unpackedSize":631920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJ56JCRA9TVsSAnZWagAAZugP/RyvEjmlTk8bWfvt1saF\n9F6tqNQi46afqAkUma0EoM1HxIC216Q52u0cqlvdIcDviaVygSimOo+05hTo\ndsYCItxBnGwfzM69dMBrtLcN4L2zSSmhQintl8oHtRaBQs/QdxkrXCFA6Ekd\nPQrJtbb+A+ZQb2xVeOZdYnqwjCO+/It5QXMvWjoAOETj3anuqoWJ7J6u/WmI\n7ulW582LtK6eONZIjrVyK9CUn+7/YDFH8IgE4QL5nOlfEqXBZqxisMIwW8Ng\nFONPh+1TwZoI3xtZC71LXtSTqj7/5Kq1TO9UkZzgQa90Ips3zfS3d+/WfY6D\nOsMCkzzH2nWRNE7lRRmbnAYyU5e9AaPMZdsE660cVuJm+tkd/UOBmwOTKZwV\nZabbTasabZdXvfYKkJB1lWBo7mqTL+Q6OH/OkAj1yz4D0TH9oEib0Z6B+wA6\n9CQuWokfkcX0IQmQKAoGR/Iu+ITs9XKAtpyxKc6Dp5c0YklJrf4b0lcFA0wh\nazZtFSqi5yyQYcKG8Ka5ztGE8icFdJ+3D19PtQJGdYWCWWKLI5Ozx6ZMUwnX\nH/5JHdBjxrBEdN9WPHvW4v4/BhDoNPLNUCP/nUX72mP5NIjv0QjukyZiNGrp\np/eMIG0b1p1crT4aHj//eAz9JMeBBfl3qUg04GJ8RSfGEFdRgewid6rlMLvE\nn+gH\r\n=qIpj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCntmBpTZ/m5mt8NS8whWE8nl3QOWISg0qF8RK11O/eAIhAO1Of0SVU+tVc1zCoJvL/sXylQGaZ1Wfgr4Zx/gs9Viy"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"}],"_npmUser":{"name":"davidzilburg","email":"davidzilburg@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.1.0_1579654793256_0.9387436370817765"},"_hasShrinkwrap":false},"25.2.0-alpha.86":{"name":"pretty-format","version":"25.2.0-alpha.86","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.0-alpha.86+cd98198c9","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"cd98198c9397d8b69c55155d7b224d62ef117a90","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.0-alpha.86","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-rtrVlB3GRFLvf8jTx9gFU+J26hFPi+WDZUt3vp+5xrH2AaKUZqR6E1gSbhCW3AwkgQiXtCYUc3UwFaJAZeb9XA==","shasum":"1ccedddb8246e99c6ad06fd8efd25461125a39ec","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.0-alpha.86.tgz","fileCount":41,"unpackedSize":365085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJee5HsCRA9TVsSAnZWagAAaqQP/1HNlDePCG8CMaVWb0sq\nfkALHvFL0HdzCrgKAyNDkwZQWivx+22VPADmW+HSTO4+g2tVWaKQzChuLHZH\nBHb3j0k5iq3k70n/zw9ClOpDSVbfIBFywc9xwZHaOmw79AQDL65l4HkL3PuZ\nM9hix0q63/rMflxrHkllSDxRwnOrHqNFCQjphcqcfSlWIAgHNVDgmQgYP84h\nltKzwiW0WdWtg+1PKnslRjzPKiY3OcT8Lo+ZQq4XdPC/BVD9FH0FXMY7PTI8\nODKQpqXmzUem1I7DzrYwMzimCsRQEfMyIPPykIR6CKDUCEL+C6JuM3DdV16y\nrIfjHn2ZczlOleQZi/OGoTReB5HBrTQopifGGXepC9tApE267FIkwQHu+DgG\nVHVXGWUUq4bjDqkS/ntNrjCb4x2xGqRW5tPPAgxp+ArsOdiuXfPRiwWPGnzv\nvD+l9O9nKUgroG6rzs0KoPp7I7/st5AUGkXHzMBWjrMip1rQhU741MDgfUDg\nOtcXBtmBLIiJZ5EsgLuptbDa5IyHScaS+v4SKuzQLpi8US/QoLtKfKxF/Z3S\n++yZbIT+WkP1CBM8ApGQs7QDDl0rzsde20np7nKdVuKEwIUvBxqdixMicOw6\nW7l9zdBAbAW0ngcN+AaTMX+qRmTifV8lk5fuCCqEVJ8AHZnE5XJ01B89Qpgs\nwTjf\r\n=RbTF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFkzWAaA/fZuJCI3R+5oAzWalossRcXh9BMEt4v5rZ/LAiAZOvlYM8LVjJKDPKkGSdbWTHQEMzxppQRyhg0/ltQsFQ=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.0-alpha.86_1585156587794_0.14831469129049846"},"_hasShrinkwrap":false},"25.2.0":{"name":"pretty-format","version":"25.2.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"9f0339c1c762e39f869f7df63e88470287728b93","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.0","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-BzmuH01b/lm0nl3M7Lcnku9Cv2UNMk9FgIrAiSuIus2QrjzV7Lf2DW+88SgEQUXQNkYWGtBV1289AuF6yMCtCQ==","shasum":"645003fb5da71a0ded46c90007dff0e03857de7d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.0.tgz","fileCount":41,"unpackedSize":365047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJee5urCRA9TVsSAnZWagAA5fsP/iVweLr+cx5jOfU8Lm4q\nlryfU27N1r9LUUk1IYI1RpAZHV529Q/khKXW6iKwXczwhMi1ahSv9Mm3Zqy3\nVSu3THKYCTriSBITe4fppoUPOYinEk2nBEaPwzhg16ViDQUJsMZcqoM7WYXg\nmLKtOpjpjufUJWS6OoUqaFzaxl0+tsM0g3izD3pAu3rMdFLBcj2IcYoIwbrc\nTTb7M0bp5yuWV1BKKddVGd6x0qQXIjPZNjzxkwETzE6JLpwzwMC8/ifuydRV\n68UTBpBnz2ZXj+ynzNvWn91CVl913keDRTuAMALR/vpY30NTXzUKN0WIIQ/r\ndY/L/BrhaxkUx4Icf3GQV9OH2imraccq7MjTzqtlZ7Ty+pgmq6x+UtmypRla\nq4aJkCBfM0g5SeSwuZea0kF/4B8NsFdZzCfvmE21tywkXXAA1rVCebipLn5K\n1/0ktXpaQqiIN4/xJQc0O5TQ+gUfG8VfSWQJo86r68j4qZQa/pIwUMQOJ355\nbJc1qIZaSxvnDBHNzfxcrBvFSI0YBrH8ExE2cmYq4HdWZNmO6jh5b57S7ud5\nEyASoDsEc6mMCa8Wj7cyt2NFtaGtDH3GYC0IQIDKFc8Wyf/C6ZuQW1lOX7v0\nApXnz7YWjcnDVmSqw6HJRnSHrgw6LaKPsYPEz68QCoqAerN+P0GUm2aW5Ugn\ndY8h\r\n=T9N5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBFpeM+Q2QXUQWviu1eYmCi4LOfQkpfSvXm9PDIFxoZgIgOSbIuZtJVkvdorDydMXjG4tXkx7t1Xv39e7p3yB38D0="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.0_1585159083399_0.26118180077433273"},"_hasShrinkwrap":false},"25.2.1-alpha.1":{"name":"pretty-format","version":"25.2.1-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"*":["ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.1-alpha.1+5cc2ccdac","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"5cc2ccdacb1b2433581222252e43cb5a1f6861a9","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.1-alpha.1","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-G9Qh1p3UW8FifOzD+IdpqS8fCrHcT6vPaGZCCDZh0HCmxRc0N4aFCvkB07mzZ9j/mkcdkvCxfNAcO18mxt6JCQ==","shasum":"7e8b60ad1aaa42e955f851c1ea54e0a5912cb07a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.1-alpha.1.tgz","fileCount":53,"unpackedSize":376811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefF+tCRA9TVsSAnZWagAAELAP/RixsuKvFXcdFdeImX3q\naWWlLLIQH1Nj7qH4y0nU/BYIgQVhyaxaft9kvIoFBpLnpPgNytbb5FS4KF3A\ntgAC82pkMrrKl9qvyKoEgLY+4kbpvaAZwW3iJTZc1ZfqtpNRnzU9K+1CQYYF\nqPvO2yO6D3mBn3CTGqxs3I+w6/42FJc+1dU9Zj+5Omo6z1AODizSHgEHjZ3x\nxjEOdV1zgBnRZxKp+Uu252K3ZvrRhFhCCR2CCzC2nMIbIuVFdZXrNqXUlfT6\nVpI2fZopjla4CQPInxDalZcMWg3Oonc32XfP4guV9CVaxhdORRZ88jsl9Yn3\nbJycrQS6ED7vs8EbUEKlYEGuKMmH5tQcf9PSVgJVQ7PIVzmWAWSOL4ZYdxSH\nHFEByAsyciA6x85FAZYt2lXF1I53l+z48FcnLSfRFsPfJHnBznBFHsXSBA8G\nnN74ug9VnHzs9IcfDBP/RvKmqqtJ9Iv8jCmI2HpvfW4+4p2eXTy7acglVetI\nB4MItTjYbhrYchUBmufxVDWOwBlvUxvpCTM4sGms2FlpE1YMlNwa76+CZXW/\na20UTamy0KJxUqTbnnPLeYNRtCImkpyi0pJPqEWcRgvSsMIZgmOYJSZlbk+j\nu4xsq49GggPR6qNynRXJcpuvIjB5fuOSrQ8lE352ih7IL4bTK9cYogb2GWkD\nwuzV\r\n=3zfR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2hWZEqG8dLFJAoCLL6j1a+/0HuLMV0Eugw4Jsrxz9PAiEAqcOwgs+tEAzRWsUwDdkDfnMZLEYOyj4K3l0RcZfNf5M="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.1-alpha.1_1585209261034_0.08136996983938283"},"_hasShrinkwrap":false},"25.2.1-alpha.2":{"name":"pretty-format","version":"25.2.1-alpha.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.1-alpha.2+79b7ab67c","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"79b7ab67c63d3708f9689e25fbc0e8b0094bd019","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.1-alpha.2","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-jYm7HsRUFpwfjwmL7Z3L+ue4uCh4BG7YO8Dw+5PZv8VW3y2Y9o2+wqT97uBLmVtVcir0XrNrivQuiJ4iTB+Trg==","shasum":"0d30e1878c8b9f39d0fa05281d574c843b867381","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.1-alpha.2.tgz","fileCount":77,"unpackedSize":395625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefGN2CRA9TVsSAnZWagAAgZ0P/1i8k3WjshFmOmAIOI3w\nOI+HlXa0ZcfCWzCTrGvpoUOkarvFNa+jAfoV12LHxrrnSqGYhfHq1xnGfdzd\nrEy/PSWYxhkM9+Zlm0q27RFzXoF9wEMW7R69KhcFIQIdesDdLNghIUocNZaD\n2djezXs6g/XWjN3EfVdm3mVq1XIk09qnbic/4ewE2/Gktft1pYUjRXEMdolf\naDOjMTEtH9DRLA12jRuNBQgorTNAu3JPfLKJmjyA/SsV2YmwhYa7l4OH20jO\n+qQp7nJnVoKq/Wl/NuyxBkT3UlMDv1LbeCbUlqvjQ92skU2xfIclZ/Y0Nt0b\ns2Iw+LlkStJ2Hb/vWdTpUyfZmgWg/HLFnBdV+/+xvNLrz7YzEjuLqkouDILX\nykFgXRtjAONgSGR4HleZaskAHuLctAjIx8v84pauYgBzv24oNOE0jbf5AlVp\nTyP0wjtejLqK9KjrfazyX7WbjMySelFCld8s0Rm6k68sxCbxdhklAsw8hiAO\njhEW7CKQpZdXmiwyGn+YEDWwJLvKsJAEiiE53Roc9/V+EEXMV8yD7J/W7rUy\n8KYhRvmq73mrcZnO7IWj3s8fFcN7MPgg2Flm4dKz2WENubAME3YVtEbX8lie\nXunn1LnffHvUnJRXLyjmgOlMMMhl0qgMFD6i20iQvFqZNg/rj4oWIop/vozU\nVf/U\r\n=z78f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNn2GYyX/ouWzMpwBGRNpQ55PgpBAuUZSI2rD+tU/6eAiAYi3M0SKDixJQ+qJOKJevUXgQryRnunnlF6UBY9fcv0g=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.1-alpha.2_1585210230452_0.3280669812852628"},"_hasShrinkwrap":false},"25.2.1":{"name":"pretty-format","version":"25.2.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.1","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"a679390828b6c30aeaa547d8c4dc9aed6531e357","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.1","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-YS+e9oGYIbEeAFgqTU8qeZ3DN2Pz0iaD81ox+iUjLIXVJWeB7Ro/2AnfxRnl/yJJ5R674d7E3jLPuh6bwg0+qw==","shasum":"3b8f7b9241faa6736cdbc32879bee18454d1318d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.1.tgz","fileCount":53,"unpackedSize":375633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefG9XCRA9TVsSAnZWagAA5sUP/3tmOf6+8E3NYeZOHfTz\nnxJ76Vn9amXYVfNDbG4PCvd5p3zIOuYA+V0pT1KW31j+9wXStV8DyBiPPpxb\nnSYDbdveVxAUVTCZ6Ccg60M1RQb8u4EzMAS+EDS2SfJmS4HIODpsP3tKmcwn\ni+7JyNp25diQSx2EaGiW00JYK6XEmCJhAqukVFm0dbqHVAd9rcUZYRH6XZ2B\n9iKOiYy0xm0UsZdufl77VnI+6NhJ0wi/jDkcAPA3x0uJRbNtLByIOwEM42Ns\n9N8DilF7qWFvbrCC9lKqKrBm+cOfbl/FE0BwL0wrk4PdLlRPqzQiK91rraYJ\nXtVfOZUBv7EyhWbOdB/Ada+37j8ENXCTYtzSgnLFL3XQdX5wjvyqN1b22Sjv\ncXA3EBhI/4Wcn6Re9KbhX6ljCiBPa1yScmBJNpWZlB0Hc+XK50et19muAtrH\nS05z5kfw6cOyCiDRrQR6ar8rpb72n1OWh1stLF8sGK0T4l2QBZNipGTXSoYZ\nfMleDPBUT22sKMNxV1POTjjuV02irmUI+2+UzpJpSOwIUBX2WCvQ125gGrpw\n2CXLBw25uMtQ3pQWngzJm7lyIBLqHi9gnzoCCEFokbLU+x8KE0HU2k94GKtG\n+Qs1EihYu0p6picgfi7XK7wWV1yJzpnBR+hdx1Z7aI9sryibw8tgM/EsM3Cl\nXQHA\r\n=5gwo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEtLkwzSI6jH4yTI8DHFnyvSnhQPk+Nq/q0PFwk26WZAIgPfgJdNCcdEt9qup+Ww74AIRYlA2fh1BNjgcDsYt4Pmw="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.1_1585213271441_0.8557830050456996"},"_hasShrinkwrap":false},"25.2.3":{"name":"pretty-format","version":"25.2.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.3","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"6f8bf80c38567ba076ae979af2dedb42b285b2d5","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.3","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-IP4+5UOAVGoyqC/DiomOeHBUKN6q00gfyT2qpAsRH64tgOKB2yF7FHJXC18OCiU0/YFierACup/zdCOWw0F/0w==","shasum":"ba6e9603a0d80fa2e470b1fed55de1f9bfd81421","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.3.tgz","fileCount":53,"unpackedSize":375633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefQ+OCRA9TVsSAnZWagAAojQP/i+wB1bbD5f4p7Pj3J/1\n+Ut9WeqeqAKz5TQXfSnDyEmL+IPX9KrNfc/h3ydO29abqwkrvGUh5+GtK+Rb\nH1L2d502gDqFJTJ90gufl/GILHV+uruArYYpij2+kjZQyzsKHvsl3MgofQcv\nRrJ7iFNqW/1j7fD9Glo2NysIFljK/mhHy7YxSWv7dDH5GirMSvM8dCxtnm9H\nkN1WEaG78OuLuvP3pgtS7H1oxsOqeuF4tru2toQSNzrqBfroBnOMBVYS4CsM\nTdyNDNWbLSIt6+IAlZIUagkmuWCRXLYulzdKR2Tkj94swqWK3oXTSlfhYY/x\n8qYBiLZfg9+MbMXeVlt/baD9jjpa3hAUTP2fqqRiiUEwcaiEwBvwXPHXS0SV\ngKAEA76MLGK8GMQtbuZ1dgqwRGbNgRTgwdz5gnR7o8IYlUBGoy/Tqur1boL8\nxSRVNL4qUNcIHh9YDJLi2+eNq3js4qnMWeVf2Fvav07cBF1SBLEoQ/XmyBDG\nn1nLLSVcZ/jpz8MILp5NDBPZAjLsAUgUTn0dQnirG/KAg6GKdfbv2YqvYQcw\n2k1WPUGb83xo3a8BmOJzohzcE4Cx5whGth/RySa60KEb6fHlYILDQtqg4XVZ\nGngKDsktYNBU4SGP/k6h4a+9hG6eaoUw74ScdmiMLgDMjfKlUxe7/7eEpMb2\nccFy\r\n=rGmy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICerWQzIzlOv5DcRD6MLrfWvnDqgNfs/EUwNSOfb2DQWAiBf2feMr/jZAwxXwMjoVjUGetPyY9hNIGaYQkXlYzT7Zg=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.3_1585254286302_0.8069525036328202"},"_hasShrinkwrap":false},"25.2.5":{"name":"pretty-format","version":"25.2.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.5","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"964ec0ea0754caa2d8bef16dc89c1f926971f5eb","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.5","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-EhVA7iUKzLlK8KaWmyAUWdxGkHMQkEXd/nPwsqsudKs21ZKAa4JZlfz9GJy6JNx07h0SmWcqLMCPvOc+vmk6qA==","shasum":"cf43adf52cd479188b6a78b279f770e7e6b271e0","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.5.tgz","fileCount":52,"unpackedSize":272362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehb0JCRA9TVsSAnZWagAA80UP/2/84kKjpw3GSwR+M1pK\nhtg66UYsp1BqBPIAbe7tERI2VyMuTp5V1RbQ/piUhQC/672dE0ah1dtAg8ym\n91kFl7AqHL3I7xL8azXbTpDzagYvE2ycX7vz7HV2R3zoSaf4Z8ZIJ0C+HedF\n9iliqrDVJM+uqLMwvVpKxuUO2Xay+ODYa2hyMnY03dFUxr+rm/mQzhR+yZVS\n9Sic/DPKRRLSlAVUcoC8Od28c8qIddH7bSgx23+c/W7D089jK0RfnIDzEH8F\nog1EwhK9DYE9aBoqcwarlQy1OJeJjBqc/+ZzFxK7caPR0a9hH0QlpJ0zDyTC\nOVJXvCNLLp3Wtv8YxU4w+oF43i6j6KdiW7JiZYk/aS9L1fFu1AId/bP68Ia7\nDopKutSlPgvErTgD9LJ57igtJ2SA2h3HY8OTUUkBa3mHx6afJ0C0Pw+iByKY\ndABCk3R/sSOujxQIhW/12oQmkpp5Vde1eVpblsEL+cHNEd3KijfT4iRwNihb\na8IlOBco+G7H/6bisA1CZwNA1DNiHAU7VG1U/Xud7mAEZP9XbdnhHJpAqYMw\nnAn+JR1/o6z4ZStCIoxXpnpGoba/PC3IhFWn8L4R6gCYYfvLxBN5gEQeELka\nDuqr5crO9tjZ/9COwQXj7mdPtzPODIGC4GOMJjTjpKGEAqLjwFajuTp8GEON\nyfiP\r\n=D8fX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFSXQ1+m2qk8LCGoUax4sRR+5QNCdbqkGrKmA95trelAiEAxWaj2P6kpdNGft4ZK355NLlhEPyq+bdVY8sVY1dsSa0="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.5_1585822984548_0.6111607829865207"},"_hasShrinkwrap":false,"deprecated":"Faulty publish, please use 25.2.6 or newer"},"25.2.6":{"name":"pretty-format","version":"25.2.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.2.6","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"43207b743df164e9e58bd483dd9167b9084da18b","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.2.6","_nodeVersion":"12.14.1","_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","dist":{"integrity":"sha512-DEiWxLBaCHneffrIT4B+TpMvkV9RNvvJrd3lY9ew1CEQobDzEXmYT1mg0hJhljZty7kCc10z13ohOFAE8jrUDg==","shasum":"542a1c418d019bbf1cca2e3620443bc1323cb8d7","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.2.6.tgz","fileCount":53,"unpackedSize":375633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehb58CRA9TVsSAnZWagAAaa0QAITEawlRjfda7M/uG6tw\nKa5k1Nl7s3CL5E1uIOPzKifBZ6pkLs3a7G4tveJb81HeJrnMrL8LKoqfJ4H7\nZTr8ST/TCvF183ZwHKTLp+9V47AVJFv1/SuxUg9Eb3n3rOq1uJv5hLAgN2q7\njy+uRyAxM9ouJ2laqD1DTjc3RegSxI+pQKPl8p/zMSrdv2h7EoOmTxbaVL54\n7T3GxoPkIuKXXsYz/QyhrQ+00sn1DEGekO8Pt/JyaL1jHsL5MBztaUho/RlA\nhi4XKQRtcQajs49QHEpf4On0yihRKUwtr828M+02yqGUyqeGcb3mWEIKep43\nSekCgTa7917j6MTZXS2TcKc/zbzctSS+/qoEAOcPtDdqQ2ZbcAkoS+eV08Kb\n8LsNsyTRJGoZ4P4Gn9T9b59ZvyJdvCMdvgLtPGbQdr9YZRfBeKErP2t1a6ny\nt3TC2UpL/LE7HizHl29chb+yj5QILSA2Q+9uG2UHdmuNOnLSg3MwXd7YWExN\nZl5UZTvW5GVDT5XpCmEMaSS6d9M8+xgMOekhI/cheHdKWgs6jRevLGl50Cgt\nFYzjV2A2pHG50JX5/nEotRWWYSbejH60CPneUl6i4BKk4NuAIi1CoebL9Svo\nIiJPIv39VXqj/bu4TgC6v0mZ7JKU02Sq9Zd5RWCi9GfKYCaaiT9kAT/hSZL5\ni0qX\r\n=r7QQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDItH8k2CHhVNmEeR/7SQQHTmw5FIQN96fsmyfemVeGVwIhAN9WHMi93nLBc2bL6CU3i5oOzF9VuPMlyv35qik+W61B"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.2.6_1585823356284_0.49923386717166696"},"_hasShrinkwrap":false},"25.3.0":{"name":"pretty-format","version":"25.3.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.3.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"45a4936d96d74cdee6b91122a51a556e3ebe6dc8","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.3.0","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","dist":{"integrity":"sha512-wToHwF8bkQknIcFkBqNfKu4+UZqnrLn/Vr+wwKQwwvPzkBfDDKp/qIabFqdgtoi5PEnM8LFByVsOrHoa3SpTVA==","shasum":"d0a4f988ff4a6cd350342fdabbb809aeb4d49ad5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.3.0.tgz","fileCount":53,"unpackedSize":376134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejc/CCRA9TVsSAnZWagAAiqYP/RPVsu1FgeJBMm38/8jO\ndtoU30IeInZt9mE1kiORy1QUGcdI10gTPZBSf+JB9EFJg5nEmh+V6vsPV8dD\njKjmXNML7UkvM8tH7tfKjCkpbbWv/iB17kCg5NbYclgw5odljkvpOdS5xlWm\n3VxpXaZFO95ADGEHIcT/dRqGZKLAcGlAPnWsUp/Z/AJ/vfCDBi8Pt68UZoMD\nnRffQkPJ647zPq3rTl5i4uKlBCa3EVEwlYTdKhozzBrvuyRr6IzrduK+PDOa\nFzcthqlD5Kd51ZBvSqyT7SCiGJ5FrHbX7w9pXZi1EHKpIot2UI1BsGbX5roz\nzI/g0qV3NJ08BSX7XHzaDMNr2iiguwAKVYOvUfYHfBHNYJZELMOi8q8p2NqU\nnOP5VMMdxjqE223wgRTdecD80OFli8gAnx7w8PExmMMttnTAW1ErfgKGQUHB\nUVtO2eeiMOsOVaqFOi+lb6Io1BcqsnJsyJSd0YjErfX+eizJWEHtGyWj7Y+Z\ntamUpRdx9h9oTazUTbyYD2uZxnexBAJ1bhwY5Ui+hptQ1NzDnlSXyzApV01Z\n687DKNpBEh6JEUlnlD6hIPbkg831sqf15nRUJ0Y1CDJL6Ti3S8cjkUenoLXK\nef0pcSL18vsHGJpRwtZILUUx9e4M8xqZEOpRqUSSPo+1M9q7AqWhQ2S+0IO/\nG5+D\r\n=G0S4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+kAHbzv0WS+88v1QBiZ0HMXHihVd+/qHKtVnPaVg97wIhANdJfKi8xccmLTy3b/QoWdKpfWwAJTbcRbwoaI3zRZZl"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.3.0_1586352065592_0.6521314664307742"},"_hasShrinkwrap":false},"25.4.0":{"name":"pretty-format","version":"25.4.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.4.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"5b129d714cadb818be28afbe313cbeae8fbb1dde","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.4.0","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","dist":{"integrity":"sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==","shasum":"c58801bb5c4926ff4a677fe43f9b8b99812c7830","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.4.0.tgz","fileCount":41,"unpackedSize":366200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenMehCRA9TVsSAnZWagAAu0sQAIO1/dYc4mXtdtbcRDvd\nAAqvXKOLhzSHmay4vu2lXuHqJ3s1jWn8VYcR7WgLS5IsttWhfUp8RJWPAk6v\nJMHck95bEv15wcVAffNWRCH+ENVd3BKmxLq5t8JGYU99ytIW2D080Phav33T\nrlYXNjXct/hjadzwtlpNDcMtaHnRb79l1FQE0UuQW8f9ptJ6LSScq7Rg3/fM\nbp57wPExtXS5y+WE1HUSpd/uOErpo4Vg6cHb1SmNJZi4TDe1HokCfJvVBtO3\nVY1F7nzKeo+bV0J9Gh/oH49K41P1J5EZYh0DoZ83kf7ss7ysGcIfN9pnSNHt\na25doWyflJiFmmqZPKTz3MBzpJr3Rwica3XyMva6bQk0vocGGekvGZj4pMaA\nr08bpTKhwhzZF+4uVDcZsQQEp2g60zoKusAhuWwPdzMll/JQ+0dYTI9Pstef\nSra4auEx4NJ8voBgliNN/ZWS6jUR/lTxZg1L+2QrxvzpZGLIte2R7sG5dI7E\nzn8am4qf+eLsNOFohmAKgojaYqZ26FqVaufQmNDNQyqYZsse+Cnzf3es+euH\nVbA4O2JqLkh82jersovYiQVpK1Sgu+HhQIRy6eo3laJVVcFnCicvpfVleh64\n38g1k/gYyj5ZPfR2BAhIPc/NoAax7awYrxuIxfvjVvzIE4ylyVKIjZQjZHck\nNIm1\r\n=KhkF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvh24iFK2cVJea6kOsAY6LLJiSX4kg2pjFjcKtTrQe6AiEAlTtALMrhJV5y/4KCRYkiLhmqFKM+gWW8xMrnfmkrffE="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.4.0_1587333024724_0.15668900300821842"},"_hasShrinkwrap":false},"25.5.0":{"name":"pretty-format","version":"25.5.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","typesVersions":{"<3.8":{"build/*":["build/ts3.4/*"]}},"browser":"build-es5/index.js","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^25.5.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 8.3"},"publishConfig":{"access":"public"},"gitHead":"ddd73d18adfb982b9b0d94bad7d41c9f78567ca7","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@25.5.0","_nodeVersion":"12.16.1","_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","dist":{"integrity":"sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==","shasum":"7873c1d774f682c34b8d48b6743a2bf2ac55791a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-25.5.0.tgz","fileCount":41,"unpackedSize":366200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqIfRCRA9TVsSAnZWagAA950QAI+Ra55c5jKG+inbcGuh\nTMatT4SHMrYsgyMqF0Zh6eAMJlAyZxT/AjJmj1Jb+bukEW/dmKD8TD0bXXrs\nLuBkWa/A91gCPDtarP4qogAubphJ2hV2xG3RuN4NvgjRi63ygKYs6R06uyQd\nEIZV+6wz6NQP46FCvIuwFImtxvbIuyXC0OqXwkpJH2oeusMv/futgYFpn5vN\nlSpkq/WYvQTTzw5xA6Cp5tzpF+Dnljd39hhNhfPDWzX6cqp8iHng77iS5smS\n9DhnBRQgbnckzYb1TLiqW5Ze5sfF6zGAS9ma8Elv8cn4oXmWMGQjrgkHg/av\nUCnRMQs0JT+MRiPRHLqS0Nq/RA1P58jHWBDy4BRmh2iSQ12Wdda5QfBwR1TQ\n1ffh5qVlwOXLFTbG9Ch6uiNZD956P9waE5l9Wv8Wcie+spkv2G1N47PL2V/g\nnPLJJXGrJtjqFk9jh4R9gKNzr98hDgfKB4huL+CwPUVzo1PKozI5n4BFfpJi\n/DYI/vQPtu8ItrrWnfDCirJfhAixmqG2jytKJiHyPSaH38mtUOqOS9JMVWme\nRWuaPCYLxGT8p/8ixaQPQKkTFyuFj3U1VGi/CKSRxyI04TPRMjiHaQYk97CX\nVMQcX/VTvwTSwJo84Av1HYHnn/xDP6T7QCOXzVvUw49iSs1mKhT53F+Y26jU\nL8Cp\r\n=qXI8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuKBSuHNkkUs8LusrTfskRcyxhZHK8Lz4mFKY9LvPgSwIgcW7eCN3Y60NoVCxNHC7vKKW/XILXOPeSSZ7lv5ibkW0="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_25.5.0_1588103121046_0.437551209581599"},"_hasShrinkwrap":false},"26.0.0-alpha.0":{"name":"pretty-format","version":"26.0.0-alpha.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.0.0-alpha.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"ba962e7e9669a4a2f723c2536c97462c8ddfff2d","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.0.0-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"lerna/3.20.2/node@v12.16.3+x64 (darwin)","dist":{"integrity":"sha512-v96Ik4hRQ+5KHsuNh8RgZgWVMaXYiR+wqGu+kYoq6baj3yeItQfs+CA5MASLfbQOCSbabSuEVHBljb2Z9tJ9ww==","shasum":"39ca843d9ddae9d8c8d511fcaf0ee3a6e1a1d3fe","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.0.0-alpha.0.tgz","fileCount":27,"unpackedSize":66907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerWPMCRA9TVsSAnZWagAAaDMQAKUNRRJmkJZ8x4+bEqAr\nPPe5JXKNnDGmD3+vutG7P+/D+N7FfpnUXgxLoBqHhHFkNxRxvo5Q/bCokCyz\nl5A2uZy1yBVLX7xsPtX0+Kr3rrXQT/lNAn/nZz3P2Tp5UgMCcbDZZvpFIT+J\nKykmkRpdZIRLoWfd/Fxt6sFpDIT+SsGM/Zp34cPnXH9tO6/lkUtkZmDpod7U\nGoDXCgbPIbilhDMysz9rtqfesqHPyiiz6Hw8M6NR4fgbYC/rCz5tXcfHJJju\nEqfU1rIpB8+AaziHEyFLqU5zO2WCS6HD2gw2hryTEobgGW2u5dwkv60jmKR3\nf2LD05akK4Afvz3G1mSr8wGGOO+6AwUIqsI4q+4puupfTozXwsTpiK7e1MEA\n+NtaYZFd6/bHZGgDWeohNm1a0LtktSvcVhfBuav0tc0fTpqazQMEv3fOSTCa\n3iSDiKZXWcCKK+EM3NncWP/KpqYakSzlUfLM2+FcVDZyEi9xiw7Y48KazJ/0\nca/5Yqml2sGDkUFrcHEq4EBQ2KtgjVY6GEvrtoU4RoN7iGkKj/FoBb3TZ+ib\nYLwbT49ao2k1yH+a0yVtE9Z6cysdQnV74Nn5/VnzvXkGXdCi20TEp9Vr8nrg\n1gakI6a4LUIkQ9wVRasYP67+iZvDP7CTKRgJ2op06DT2xsg+uPFGSBBv99y9\n9ppX\r\n=KJmV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAzk0QTSGp/WrfdYYXgQuxU6/kdTtNC/yN8CPdL9NddnAiAguoa/TT3g/6CD1MOWi7uRExpt5bBmJEk+PqfmlC9ZUg=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.0.0-alpha.0_1588421580286_0.2865787878999875"},"_hasShrinkwrap":false},"26.0.0-alpha.1":{"name":"pretty-format","version":"26.0.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.0.0-alpha.1","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^25.2.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"2bac04ffb8e533d12a072998da5c3751a41b796f","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.0.0-alpha.1","_nodeVersion":"12.16.3","_npmVersion":"lerna/3.20.2/node@v12.16.3+x64 (darwin)","dist":{"integrity":"sha512-cmmphKwFlLnAkF5/qcIfVNxBBAcWqDwrHQkjpCTjzBn150tdXXNmt7DRjg2hPn9sSedURTW/0Hd85AFK6mJiyQ==","shasum":"e9349eca22cde5b973a441a524ab9506f93c5689","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.0.0-alpha.1.tgz","fileCount":27,"unpackedSize":66935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerxHhCRA9TVsSAnZWagAATHYP/Rrv3cBDysjGw8RqtRYN\n+g5CJLgnifVoV+AMTeVb4lKRA01IPnee4YYgM8VwqZH55d39PPhVkxxe+fET\nwLi+jYaoP2igo+fDHnti5vwqYWSvB1EjeU0IERrEBWKyONmuN8iqNUN+9tih\nmaO6sPMi5LgVKer8bvPzLV4QkQguBqX6pCKpvT8YC7va8wGokg+biT4Ui6Rn\nnozFptPOvqucphJKTLMk+VprPPhY/ID1fXec/SlVWW6sTDq6sIlyP7HtULe5\nLm/VZrMZtp1EOqBcrNbrcD2dQCdcVxaHLBWTvz3c6JsvygnqNs3MAQzEYAWD\nb9Q4m9/64mnQ9kD5PSbSLIBVvCVT0VPctlgY6auxQoxYx0JGG48ySvUXnigo\nxf7pFXEwDtmYgDt41MoodSKUQ3s/gh16q28xQmRdhPOytP0ZlaYltYrUSAu0\nLDSoadylLYJtykXUIlH8g3OMZyOPBN4l2/YkYryhzn4OOcKvo5jVfOcAqf20\ndlf+F9abSf1Icc4sVn7d45oH5LELYtUkEWZj+Qd9DTvaNeHwAUpS95pgXcAy\ns/lrwjtOO9nSBp0t+BbYIs2eRqKZM6gtXoBP1aRHZNYXO2r+i1gJOYk5SyVw\nzvTzHA5VNtfXYtvt6gUV7+KL0NH3CzLiy3pRxLOCFzn7xleLRP8Gxy3x2F+7\nCwTT\r\n=Tsvu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyilyev1QDUdzSDzQhjRdeDbkFA6A2MGljlMwY452qkAiA+F/Ut72h5XCusbbNTFtl35s9Ih6CtZft33jUDZqf4Mw=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.0.0-alpha.1_1588531681337_0.22206005318311317"},"_hasShrinkwrap":false},"26.0.0-alpha.2":{"name":"pretty-format","version":"26.0.0-alpha.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.0.0-alpha.2","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^25.2.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"68b65afc97688bd5b0b433f8f585da57dcd1d418","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.0.0-alpha.2","_nodeVersion":"12.16.3","_npmVersion":"lerna/3.20.2/node@v12.16.3+x64 (darwin)","dist":{"integrity":"sha512-YpF/6WzsgE2h2YdLHHJmU+CeMLTOFZ1mmo4+iyjeoAFVgn9Wey9Rzywn/ePL9vuAJHTpshVOIYr0snGzq03Lfw==","shasum":"23e9c58713a40036cad21222afcef8378893febc","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.0.0-alpha.2.tgz","fileCount":27,"unpackedSize":66935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesD1HCRA9TVsSAnZWagAAnvwP/3DJUPzpFqqXOkweoD9R\nQCtYP/3C19ce2IFYSmLml6C1VjhioZ6ZarMKFdc6S+HsAlq58pn34fyKTldE\neO3uf/i4qmYoNsAFUMbyRyONka6BfN12TCQfVrRUFp/dSTAsQXWVlyvmZcGD\n8Y7zjOqv1VYhsfPpWxLuaDh27VR339j+W8yY7q74VWQYdXLWZrFR2ASV616g\nM4nQwKvtJ78bOFQ4ZdBXYxKIxuycNTwtMDT0uzZr2uru844D/Bfg07TY+pdd\nH+R1oQ7ZB5AenJz0N+n0+u4dsfewmgizGlSHBbF+k46T/RdjZ1kmHOY1lpfN\n7IUnNwkcEyNte585+In/BDyoOP1fjVk+V/am1gjzuOksV4KW0Bl2lOFcqRV4\nbNfol/b3p9AtUEaqSwzCj1jpdF8bQCsbbVzR98uozE1DxRtsi5qmq4fRg8TR\n5eEvkhz7GZECf5wKqqbI+iDZkTysVPLWkC0V5boZSR+jtdApQHkgp1UCEro8\naJAMuBNQlZc8BTgT8NYHC3qQWie3a+LnOxTquwiuyhE5X5KP1LExvu+C3py6\nMCDpGxr3NFS0GM5CU83j7PCGrDqtyNCg/IvVPiZf4IfQ2z0ZU95qJdxRFzOp\nljvlRz4TT/5pJLxllZhrBGTqpTn+rd7e++NOreSuJIx898Gzi2SMCLQgMNRb\nBtKz\r\n=B5G6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNU6FWvihlrYst/CjHKkvn8wZQ3hBqV7yS/HyV4EA3LAIhAPyekrtu2Oxrq4ZJDaLYyAO90nFj31W9WGhFtzGwvrGI"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.0.0-alpha.2_1588608326737_0.6471885134701545"},"_hasShrinkwrap":false},"26.0.0":{"name":"pretty-format","version":"26.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.0.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^25.2.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"343532a21f640ac2709c4076eef57e52279542e1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.0.0","_nodeVersion":"12.16.3","_npmVersion":"lerna/3.20.2/node@v12.16.3+x64 (darwin)","dist":{"integrity":"sha512-4OtdVti4B3hklbxYsnrAK0zmXQwt5ujWYqtEp+KweeaIreQwFZ4VIUkYcyizOBl/L/r7STAyCsuQ5GDmqal3Yg==","shasum":"d9762345ab8bfbb91d704d9e7a18e77b79389ecf","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.0.0.tgz","fileCount":27,"unpackedSize":66919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesFaBCRA9TVsSAnZWagAARkEP/1VFeU8ZQtP9kTDsm8Mv\n1HTvJBOpDesAaG9+5qNISJDmhkZi+OctAuwJeP79gqlQcZjbGGFUJclkyytL\n+xa+pcO+ANkMty3/ueg76M6fbYDVy6e9t+HCxeRNAsEarlCIXNJBahFg2KJ6\nCGEcSe4y8p7CnmIt75R74f4PHL8t71fFtG1HB697GpadvJ0L4o7hmmhOWOwx\n1bVLrIzPU7grqj7bfWOPyHWv/rKLfwKTCUwtvildaUUMaL2gsk1HW4c3AMjp\n4nJKiYOl4YChwujbSyqDX7BFxP49dkvEZm5E8HZB43uMQSOfTxX+d2sQxGll\nk0nufuBbt/RwdNJyPDNcOIZ1tqmA4SmRZ+ErKu+dJsSBwpf52xbPt/JGaRSv\no40cd0ze6FjxG86mqX/AjgS1QzlfeDmtnsdKmuq0qhU3+dLt0ge0aR7dlkkn\nVYf7PqNyyBNPnGR/qs0cNivySvh2gTirfTvvmptOUaTTbiKu7V337qhLvies\njV/cYN4F8nn1W3yLkSqtocQqZFR5ZEz9OvLJ0TQOW9vna7sBtThPBSrj07HZ\ndBIWrN+QSexHfRHsSEzvdCe6DIvc7Jpqj6Cso5CHG5n9rmat4hEjflGsCs9c\nPSohtdfinhOzod25u4UfZtqt0sNQfAXUZMppG7nIYTL2kzpvLq7GPG3hcOAB\nkpDZ\r\n=uvaZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFW73g9UFnpCCbA4LRNFQ9vHAVGCiWfkYY5WZjG10tgVAiB1s3MCGWJZSvWnD/ORqxy7OPHLOWXxS8lg1eSYFm9vkA=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.0.0_1588614784971_0.45714553811274006"},"_hasShrinkwrap":false},"26.0.1-alpha.0":{"name":"pretty-format","version":"26.0.1-alpha.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.0.1-alpha.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^25.2.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"fb04716adb223ce2da1e6bb2b4ce7c011bad1807","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst prettyFormat = require('pretty-format'); // CommonJS\n```\n\n```js\nimport prettyFormat from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst prettyFormat = require('pretty-format');\nconst ReactElement = prettyFormat.plugins.ReactElement;\nconst ReactTestComponent = prettyFormat.plugins.ReactTestComponent;\n\nconst React = require('react');\nconst renderer = require('react-test-renderer');\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport prettyFormat from 'pretty-format';\nconst {ReactElement, ReactTestComponent} = prettyFormat.plugins;\n\nimport React from 'react';\nimport renderer from 'react-test-renderer';\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.0.1-alpha.0","_nodeVersion":"12.16.3","_npmVersion":"lerna/3.20.2/node@v12.16.3+x64 (darwin)","dist":{"integrity":"sha512-Qczpuno/OElWdmvHeO9WBZPirJ3WVW3Ew6+Dg5VVP7z5kIa1T+6rfdMAhortduGFet85SsLI309avTw/VP2ujg==","shasum":"d74222656995a2dd57b4902f5520534d5ba1294a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.0.1-alpha.0.tgz","fileCount":27,"unpackedSize":66935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesJQdCRA9TVsSAnZWagAAL3EP/RNtvTLyUKPxwj7Zk7mO\n6K/xa5ktoRaFS9NN1TrMud4xbJpr5e5kemZAA5WDgUYafpRrN10wGo3jYgHd\n03eYk3cp1jLyEUlbTzJyeiZ9SnqYojLef6KKZJPaESiDf76N8CnUX9ZmYwIm\nsL4hx9w2kaGyOT7l4NnJsGZHH4X/7qXFq7AAa273KPasM46GOO+oB2kkbGAQ\nr8RIdRD0p4Af7sKew9G0JmoacaPXzfcIV51/ZwYp7KEdT60NUiZbdvVvy50T\nV8tK7M0o5fykFei51TPLUcftnPs8G6v5p7OkaMdFDb2Roz34rctAv1jKoXX4\nmXP2lGjuTFZbw5jMX+8+gkfwUj8t3uBnD4bD+qrhzzl8UZcmHIDoxBz2tv4z\nhcdxR3kn5onOFp5iWCLxFTJNqT9NR2XF9MvC+mVuMHkW0zbBIy9lfOCj3lWK\nRciWjg7plo0PEUPgGTv1f4Y7JLsYhXCt31hoY0uZaQmewYbOWOA/uRpjCMRw\nGVTSPxHwNOZ+fVqESnrmYc065w7VkqyGS74oMVShAhW4fsEk3E4MuDOTUHqn\ngaaACP6/iC+88LBxUWjovdgFWl0RNe+MuDsU7xCPjfY6B2WQFidC8ckGjBXL\nqnEx7PlTK+/ohkXQfcnuksJrqpIXB3SM8goD3XKSFcYWex+yjY9fs7ZMFKom\n8LKl\r\n=Quqc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6cd0WAWxwHfGTIxA++rinc/kv8+CwkdtKtDaASEEPywIgWDQ1TF0nHzRTSBpSIefr3RdEDUEs+b2rb/ilfCYuc5w="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.0.1-alpha.0_1588630557032_0.6479744224171478"},"_hasShrinkwrap":false},"26.0.1":{"name":"pretty-format","version":"26.0.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.0.1","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^25.2.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"40b8e1e157c9981dda5a68d73fff647e80fc9f5c","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.0.1","_nodeVersion":"12.16.3","_npmVersion":"lerna/3.20.2/node@v12.16.3+x64 (darwin)","dist":{"integrity":"sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw==","shasum":"a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.0.1.tgz","fileCount":27,"unpackedSize":66919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesUKtCRA9TVsSAnZWagAAbMkP/2rQwPaRsOOODW1bX3/t\nYbCKuJPkYpsV8Fj3/YPEYRa2WgKOr/QSEJ5u/qGAptdgsLjaJ8XGo3nIOeXu\nC8LYDCMKPL3kFE/yqy8MWZCDHlHZR7bzqnSUR/bs+kHDfX3Tcu0SJG6ys0kD\n7Id7dDY7v8MB9DA1cGdto5cpYqKiBZ9DCy+yFle5H83LkQkhYxqdV9Y08p4b\ntcpAz6bxbcv0M0nD3WkcB9XoR8pMe7HNfYvJn4iuJI5adqWljHpQkUPhLXM4\ni6gRZesin3vSOmnB9UvEipzNJKArpY6OT9vsoJwbSGxfhULQaU7PpDmsSB0h\nhZE/AB5wAwkpBHKf7izIzfMqOveX+lSR0lytm8MQIE2ktMZhiHgYH29KJ2hy\nqEQ9Sbun/AjOUogXM+1IYz7/k+Dqo4TBzM5/9ImgKtRgnmVoUAhto7rzboJ2\nfpZ7iHndjEfcX38rrqzZ2kABi5PRZVleSZulZ0ZTg3c9Rt9IY2a7qsCD1g3r\n2SADFJAEVApypgfp0tX/vJVPIOfEkfCZxO5nbrQ+ENi5nlmtuBNu8tto715R\nxq1hsI9FQ5fot43/O5nn5AiKJyQSNEo+g2mSlbzilMkmVqlnbUZc+Gih75YK\nz7h7Y/gbn1YjS9UHKlDNlpXZ5DSei2HDD1WG5tN64Hv1S6UoX0dmBPTkTc9b\nB1Aw\r\n=C3tA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnEU4d4bAwwVGGKBkzeTCes6e2uhVzbm+8h5ChqLXMBQIhAJIoxb+yXi29YW6tVA0RUW5zwncbsf8IUucp+A6y1K3i"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.0.1_1588675244825_0.7195190465853294"},"_hasShrinkwrap":false},"26.1.0":{"name":"pretty-format","version":"26.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.1.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^25.2.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"817d8b6aca845dd4fcfd7f8316293e69f3a116c5","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.1.0","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.20.2/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-GmeO1PEYdM+non4BKCj+XsPJjFOJIPnsLewqhDVoqY1xo0yNmDas7tC2XwpMrRAHR3MaE2hPo37deX5OisJ2Wg==","shasum":"272b9cd1f1a924ab5d443dc224899d7a65cb96ec","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.1.0.tgz","fileCount":27,"unpackedSize":66929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8hx/CRA9TVsSAnZWagAANU8P/2HXxhlVp7d096b3Bhx9\n7WZS7izVGCrDsdW0gHIySRNy2PfmIbR5NceLALU3I4p8nJqYk/kK7TGyGmwx\n3g+fQE3eqjwegjuCzaWGI6zPSCZqQnIWEtgFqxe3HjGABLHkrX0Vvav8okkL\nOB/AdFZ/XgdgLn8ED1xRB4Gk5vLjgkXryAblG7e/QA+RfA4ATbU/35KXBAhP\nJECcpRDLPVHQ3L6hyU96ovRGpEwMmaYRqN0QvyzzuFZnURcjXkB3HgpCD9fu\nTMCY7SzK8ZlE2uLWIKvkdIgGXXfKmt0bCFaBSfEJZ9T+g9gsB875edwzcUwm\n/6TEwds712CDKCYiF90Zt+IVdey8okhwqmRTNNqbFy5aZMGq23Icf4M1LI40\nEu50SJJ5dz4I2BJcIhsBDOqijgq9I7eeB3Einko+W26CJpMI9qV1gshlE3aS\ntu3pdeb+Ar429WApDwkpsd1SymxmmP1jJyBtD0AUkSgQ8ExhOdc/IubV82r+\n8DI3c7Yf2iCkKU/hLaMRHJq0Jl7F+DunsiftACHOGVgrv8Dd+kNvuA0KI7ce\nist4shQIGax2nB3jr1k8zqkgrxjMlctT+5hZWBVBcs68Uk2YaxGkPPooXi3g\nJ/KuEr1bNmuHitGAT1sWt3SygQdMZhaA8ysbPph/BZ2okmn4khtxnJrasSAo\nUwSD\r\n=dUw9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZFBc7da+zJZLxZMGHo0DdhoHhcqmy4d/NI24l1Rp25gIhAOOJMaXXyfrMEz7jI8qOCEq+TNklXfnLIae+m6kuZjoj"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.1.0_1592925310707_0.3402205445744704"},"_hasShrinkwrap":false},"26.2.0":{"name":"pretty-format","version":"26.2.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.2.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.2.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"4a716811a309dae135b780a87dc1647b285800eb","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.2.0","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.20.2/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-qi/8IuBu2clY9G7qCXgCdD1Bf9w+sXakdHTRToknzMtVy0g7c4MBWaZy7MfB7ndKZovRO6XRwJiAYqq+MC7SDA==","shasum":"83ecc8d7de676ff224225055e72bd64821cec4f1","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.2.0.tgz","fileCount":27,"unpackedSize":67481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIpzeCRA9TVsSAnZWagAA/D4P/2ceYEyrbrz9uJF4gVGs\nttDKPNmEU5qtT49SEuURRqZO8jPO0G4IVSz1SEYVBgwb85DiVbcp4177642j\nxyOCP2OVk3/Jq/US0AiovNpZOxXOTAO7B+ji13f8XpQdHtvvlqi4XRPVyCgQ\nwnJA49CdJdz1DdflvDVmoOQbzK/DPAqrHNoAHstVs6py2ujYGs+PXz1VfEwJ\n97GZ9qTnBHk8BbPTyeaq4Sq+MAzjgry3XksfYtc00PxIPLOitRY0ZyvVeY/p\nHZF129G+/U2880nCO9o7Lqe46f6IS/XHODnmuzolJFmbKT649FX/dfPfF6K4\nF7DKiHJb1AKzo3UYO41QjRxeEN9tFaGlD23QbU6osutOBMK5Wt/RPA4t/Cuv\n8eTS6kVpRib9mqKsQydAQ/hpsZnRst19TPd8BOinuJ0omUjLED5S8g39kItX\njRDQPA/0g+lC3cwwH7IUZWplhbPkMXi2WnNxfVYNaM0wHR3PBzkq4IA+vPmr\nXH4uwupe0C976LcPl94uTQv0CJKIvxZmH4dufCxKstlT/P4sUi3SHq3t8Yhr\nvJhALAeL2wh1nLNkMa/QuntPBmwN+EtxIUUUGSD9f5pehyaWzZUwd78FRISs\nrZMvDdserg0GaI4sQ5r2icB8rxXUvhZgNWSijxMiLjWpLf5az03cSCujvUe7\nizy3\r\n=5hQ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEtItZGg6rCoh5/zRnIKoSOYwQBnpiimv9nesva8UPHcAiAVOTGNbJWZjOVyFziaVSQ4tE0bsYUw+cql0U6zF9bqjQ=="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.2.0_1596103902126_0.9841052534829695"},"_hasShrinkwrap":false},"26.3.0":{"name":"pretty-format","version":"26.3.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.3.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.3.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"3a7e06fe855515a848241bb06a6f6e117847443d","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.3.0","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.22.1/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-24kRw4C2Ok8+SHquydTZZCZPF2fvANI7rChGs8sNu784+1Jkq5jVFMvNAJSLuLy6XUcP3Fnw+SscLIQag/CG8Q==","shasum":"d9a7b4bb2948cabc646e6a7729b12f686f3fed36","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.3.0.tgz","fileCount":27,"unpackedSize":67481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMTAkCRA9TVsSAnZWagAACjIP/2S3VfVvIQpPZFh19NpI\nvaX4R0sx0r1SXeTBebInLf9Ixdt2nn8GcY2886l+EKKvYuCjPeMuL+4XIQ/y\nfyiMRY+zaHjVBObj+kjA9cGyRyVX5YUXUp0cBu8lK9/dL+2ZdhFNta7ON+ho\n056vN+GAKI6zqpsChCOlYJ9clwyDHkGoOGLroz1WrbCLrzZSW3YhrwK71FOc\nP9KwLImjGV3syRm6VvBk+M413/FVkGeJO4XzRgojqHYZKMlWxc5HFsFF9c8p\nD6EEY+rOUCUQ7d+CmZNbyf0AEn+7rXxH553WrhVKowZoOPalUNN1Clc2sRKf\nduovBS+Foe452Bj/1ssYJ0qJ29MU2Mf2wbG9VOZZwqy04tyPgpJqB6OxUSWe\nyETAefPIC928qr2VmLkOf5EnaQdBqis2zxmRDsJ1W6zpNfqy7gayIX1+lbkZ\nCFXlAx90pKCLsyPt7uxluFSlyB0HU0BfCsnwPeiedS7/0BfR01KOYWf96S7K\nYJ6NhpqzwtOhBXC2aUP9FD+OFTZ32xlREkPiH7DA+0DG0o3Kmr3q3wm2FrMR\n1/7ZF8sHulHCuU7MyCmL5ZRmYnOKCYjITvEYNm1fi1RW5ibYckq/Gy1Xtgjy\nDZLFwIcq5GsXi2U4XISkaJ7L0l9GHEEuIK2JF3g8V/GxlIoOLd9C5wxt10yo\nFoeX\r\n=5WV/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHa1PJnVxPpyxTTNZhgs2Zh9TH4otEQekUOMFRmDioT5AiEAni4ARaBbqI6wHiqIforOGaFgeQN0AD09AsVzVB6jUqE="}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.3.0_1597059108189_0.5347288199257358"},"_hasShrinkwrap":false},"26.4.0":{"name":"pretty-format","version":"26.4.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.3.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.3.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10.14.2"},"publishConfig":{"access":"public"},"gitHead":"0b1e41d1d93ce4d15646f4a39fd5a7ffae5f43c3","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.4.0","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.22.1/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-mEEwwpCseqrUtuMbrJG4b824877pM5xald3AkilJ47Po2YLr97/siejYQHqj2oDQBeJNbu+Q0qUuekJ8F0NAPg==","shasum":"c08073f531429e9e5024049446f42ecc9f933a3b","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.4.0.tgz","fileCount":27,"unpackedSize":67509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNFhiCRA9TVsSAnZWagAAj/UP/iREsYR8yJ0DK+qyWSY2\n7LYC7GjZXrH5CR0rAD8NoIB0RZcxKn3r9+Ub1NlaHn79nSS2pXBrRKvM86Nw\nYtMlYVNnRUrkr3nCEDG7Xb4/ES7SYA64Bl0oRN5Ljt79h2Z1xrR89CYxwUXF\nxSMLk2+paBMaD9dvh4z5KuGZofgYrBhX4+JK99Mb5SPsKwwpmoTLuWaG7sfh\nF9bjRxvuryaWg9xSJNr5I0B5tHbpSADu5lCTsl+bhX7FVyGXEuHRNvgs07Mn\nZesux0eIVoKI72SLurpZF1ZcUxw9StzelvV/j3A8tjwUhEF0PAb7LSKTAA/O\nXmSAZ3ZcPgMfOFDxGg/NTG/VmHU2TpqkehwcLO1YTY9oEy68oTZbPIPg2cLE\nLblKVhZWJ2HADAh5Bn2RAboH/cmdN4xJnTE30CCelcgnx8DI0QprE5RTLvWH\nDCtdUANYwb402HGtJCZtLw4gZPmuV5cqL3jSM5XHa8uKhw55isGUajNbRlBM\nnvOOhsWrHOyV202+iVRHq1/OK/4gsglB2F6MPUGsGCKRRWOWRToNcpB7jb3h\n8bfpOacJgO/H0X2U3lP4+TOLbxBkCG/lSGEIU+ULSCa7upl2rqzBFBcReXlb\nVk52reV9YX6xfbFDiI8xLKZYAsXgMeIfYpHEkVh3WX5lrmuMCWs5o0xzj4SD\nX2Cw\r\n=PrCa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRaHI4JlfsArB7xMhrBRUinNhe8RbEAlG39hjpZgTvgQIhANuudDEDYY0YvnBFSZ7UNz7Sq9WkaD+7rx1sQao9J2tj"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.4.0_1597266017827_0.26687810722358507"},"_hasShrinkwrap":false},"26.4.2":{"name":"pretty-format","version":"26.4.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.3.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.3.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10"},"publishConfig":{"access":"public"},"gitHead":"2586a798260886c28b6d28256cdfe354e039d5d1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.4.2","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.22.1/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA==","shasum":"d081d032b398e801e2012af2df1214ef75a81237","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.4.2.tgz","fileCount":27,"unpackedSize":67504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQQsVCRA9TVsSAnZWagAA0wUQAIHqeeT9KIpRcVKO+Mtm\nhm6zaFevuPDBlbkwo47fzr1QAbBfe+uJc/VOUMzTTpYkRW1d0no6I41SpLze\ntkCVWYECDuJkhk8KAHzeDL53kpIVnDUHu1A4Ct/++BS0N7oKC2QRPrg9x01V\nKv1MgRt78gCNYJyJ4xN/9yRegpgZnN/FxkmviuxZVGl9s/TCTFF7VYPUfqbe\ndPrWlzK4Xw48OJ1RKIhSoiNyS1bpKUaadGX1vWmrph60GMBrO+mpAMaPKo3g\nBIA830tUAA00cXXIqRBaY3/qhg49LKW70/Fx4HEcNhAr3SwjRfBIu5i91an6\nAaXRKGJ8a1sz8B90MippzHL03bTaGeqLkNfWxVjEvugypRYoqXOIk/lpzfc9\nWakyE2QxTKx1q1ep3/Kb6yi7gPru8ESbbNpSBaqj/0CqnaMWdhikfD4qEKXU\nlk86O+C1MglD/LeBRyCCVuay+/ETvdrMONB30ON/WsnMQCh62aaFPFIF+BpS\n8zNKA5xl/g7a/pZcZHlaTcrvp/L7fxq1gKGMLCe9LySOD514ZZwoWYt3c+Ok\npATpFBJkE54oS0qoL5Z0RnKrwj3mQkMVSsQj3J2GZTiEHnki3IMz2A9qM0S4\nvFoKFY24E1DKOAjKTpV1i8wtwTlTAU/qXIVxc1QZd6CNX8dkJzC1+FWY08JC\nBJyP\r\n=BUo+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEbt4e7INwbQFZxUk9yK0BPuufF9ch0by8/LJr+QgMkwIhAJ/bBEyGuQqhNPx/0kU73jJBcdmUorPEiKVJRVSTvusX"}]},"maintainers":[{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"davidzilburg@gmail.com","name":"davidzilburg"},{"email":"opensource+npm@fb.com","name":"fb"},{"email":"rubennorte@gmail.com","name":"rubennorte"},{"email":"scott.hovestadt@gmail.com","name":"scotthovestadt"},{"email":"sbekkhus91@gmail.com","name":"simenb"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.4.2_1598098196527_0.4485991105059288"},"_hasShrinkwrap":false},"26.5.0":{"name":"pretty-format","version":"26.5.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.5.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.5.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10"},"publishConfig":{"access":"public"},"gitHead":"68d1b1b638bc7464c2794a957c1b894de7da2ee3","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.5.0","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.22.1/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-NcgRuuTutUJ9+Br4P19DFThpJYnYBiugfRmZEA6pXrUeG+IcMSmppb88rU+iPA+XAJcjTYlCb5Ed6miHg/Qqqw==","shasum":"3320e4952f8e6918fc8c26c6df7aad9734818ac2","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.5.0.tgz","fileCount":27,"unpackedSize":67564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeucvCRA9TVsSAnZWagAAm1YQAIf6oP1lVgBR+85Gij4m\n7k9OpLzipAAVMPUw0F180NtqVrjlh3RnlcQqczD8XAGySQ3z5wt9g//Rphuw\n98GKnQir2GPpTRwXCGN9VI0X+W8hdMMcxhHc/Wdw+XaelV407/dKn/KyFtRd\n9P3NyqOhZcRVj/CUfH1TnpA3JoSiFBXhQVp+vjmtx7GyyHD16NbQ3PxGnX7U\n2pCLhM0grfqxt/drKjx1287OK73A1T9YRkYKjbJMSv+a9ETSChFbn/+5voss\niLUXuO+X6zCMnFXWo5JxUtGbDtAPlY/25dBINgX+ocND57LoMohqdAkDL9B2\nIVjxZZVLaIhykNy9moAZwqsZI5aWjPUYi7L83qkHed4NGVjd6XbYsbWFkTDs\nEzB10ib9S/PbEcHTtB/ef/uug1HxwFsJR/3/ShUIabxSTaABqBj0TbXwBb3r\nRGXSDkqyD6TyYZAf3pMGcM9txD0XLdgpVfI6fD8FOScjDr8YBo0K40AGhwkz\nVKeDxjk6GYBTwvZN0tBMebmU0Bq2agjB0Lyr/5TmWrR1gdaO1pHkItpWGhh3\nffk8T3NhhaivAAQ3MQ/txxbXQG379lVp6sh7zU8J8yTMP3UinlWQeHzjjczu\nrn7zl0a5Ct/gMm0z4Wd+8hvdXR+aM2y+EJhP2NpAxqDD4UpRsDPvOZ551iQT\nUglO\r\n=sV6i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTfbY+PvBggHm67y92HodnWyGgGru2/ZZYunHlOUr+RgIhAMEUL2nEpJ0M4qGYW6v1fmB4BTxb86Yn0eCJdk1pGjFs"}]},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.5.0_1601890094897_0.6435085745347244"},"_hasShrinkwrap":false},"26.5.2":{"name":"pretty-format","version":"26.5.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.5.2","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.5.2","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10"},"publishConfig":{"access":"public"},"gitHead":"d2bacceb51e7f05c9cb6d764d5cd886a2fd71267","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.5.2","_nodeVersion":"12.18.1","_npmVersion":"lerna/3.22.1/node@v12.18.1+x64 (darwin)","dist":{"integrity":"sha512-VizyV669eqESlkOikKJI8Ryxl/kPpbdLwNdPs2GrbQs18MpySB5S0Yo0N7zkg2xTRiFq4CFw8ct5Vg4a0xP0og==","shasum":"5d896acfdaa09210683d34b6dc0e6e21423cd3e1","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.5.2.tgz","fileCount":27,"unpackedSize":67564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffEx9CRA9TVsSAnZWagAAiK4QAIoXVJ9HxsubHszrHyIl\nDIznu8cQpQic6TYf1Qt4CMvwZtEKU0S/U3EDjloPUy6ckhvm32U5Z73840u+\n/BjffrJz8QUCGiwrFLY5Xcd7GFuNJaCay84X22aaK8MFKcZiZ21Pu1k03Szv\n1TDYQYQ4XXdr35wli6Ozk9Z18+tJHuUd2EzbRE+DbTx8ctpfYx72pWmmosP9\nrMEu9cqA4jG2PgSi1YUnvT3RWnaPd9CvUS8MNtX2Sp5JNagr+JXuiuX7lCRD\nk73nxedBNs/j7wfghyVhLR+0gG8Q/HWQz8RFaC3FCW/B0zXYlGDgeD5yBpTh\nyZ0lttp6bIfLKgzcbaIkw+CmJejOh07Wq9QYtjWiMqnqq5JEWcURsH1+mmgo\n14WajT8/KPEuAbhAGD3ZCmTNI3oWTdf/3e/rG0IpyFhYokkVm+KgjmxTxI4Z\nDr/30NL6CSxaYinThG8c+LXzyDwlHBJBK8CeEo4Y54NwmLMSWeCi4RA10Kkg\nU6TCYvt59T942KnmJb2xolhiF/SRvLtZ07ZRMv2ppuUE4UXwmC5lkZyVcxDC\nRRBOiCqxVElGun6D5Rk412YaO+MovKrPOazU4aRkxviwwBiprgOa73Rhgr0h\n9bMqiRtpFv2+IIb7EJxSrOd9dA3+lqUpleAelmueNhFn11KFpYY0fHLrFjWd\naEHL\r\n=3xuN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQlUp8EySQF5yGL3XYUqc25CjrcONlvUSrpQB0cPJ83QIhAJOOiw2sTOfcKgh5MfL/P14V/iZFuu+Aw2KfdNN/ZXAa"}]},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.5.2_1601981564548_0.2252929830964001"},"_hasShrinkwrap":false},"26.6.0":{"name":"pretty-format","version":"26.6.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.6.0","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^16.12.0"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.6.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10"},"publishConfig":{"access":"public"},"gitHead":"b254fd82fdedcba200e1c7eddeaab83a09bdaaef","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.6.0","_nodeVersion":"12.19.0","_npmVersion":"lerna/3.22.1/node@v12.19.0+x64 (darwin)","dist":{"integrity":"sha512-Uumr9URVB7bm6SbaByXtx+zGlS+0loDkFMHP0kHahMjmfCtmFY03iqd++5v3Ld6iB5TocVXlBN/T+DXMn9d4BA==","shasum":"1e1030e3c70e3ac1c568a5fd15627671ea159391","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.6.0.tgz","fileCount":27,"unpackedSize":67564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjX9uCRA9TVsSAnZWagAAMA8P/2+h6HZakN/kOxuhmVJl\ntP9okVSvyZaY4/MjGtEqRmUhxDfA2SUT1PQniJN9ac2ucIV5oFwy8Lj59X7Q\nQpEiQuFp7jUqnIKPu+TjCy9NjWDR/8sMyr7+jGOWbh+qnM6xgKpi2kQkYmCI\nzq9Ymt4dq2DVzJieMp5zleWmqJujxt7Z7kMlcrmzJL9+I9fsTJ2tFhfh3k1q\na2hJEUW7DdDeNCEql1V8x63cr7MCheM4grIxaaidJEuXJ+bHNu5d7UJcSnoA\nOCeJsLKc10O5qbwQJcbUvnMPReb+/FM0YAyWRlTDEurq9Vf221m0WafWJF37\nx2SPUbE4QSLD8qlbC69OS/ZXMox2CrfqqHs8i0ShXvtlOCWr/p2Xf084nT0A\nJZ0g+DMYLqN3gGkUPVfvt3kBZm1rxpQDja9tWGLCOcxhtCOkrUkB8o/Oq9l6\nDTgpdGWHfHv7LgU5F2i7gTFKZjM30cQcisHpMriOuMfXVbj8+rZvu0HSjE0m\nIgMXgTLF8JjjOtcDt7WrMEry2otTMIlQsqRJl2iGdORlWY9JjB5N/ZajwipO\nhoRCSYxLP+CafRUcjtqqLfyOdc/jMjCYMIwiR/d+IMX1exGa9SVrRYDZQoO9\nz557BB7OpkWZfGyeuycvIWdLeesBxjEo8eKrb7//D1CKhRHRvzNdYOS4Q2SU\nqjH9\r\n=iFkv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfmatffMTBf9iASC+G1DBtmAYud65dCF2ZAVM5ZImcVQIgF8iGijc47E/a2zTCa+Sx1HTaCkWOkvghRxkXNpkRK7w="}]},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.6.0_1603108717608_0.242439414276991"},"_hasShrinkwrap":false},"26.6.1":{"name":"pretty-format","version":"26.6.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.6.1","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.6.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10"},"publishConfig":{"access":"public"},"gitHead":"f6366db60e32f1763e612288bf3984bcfa7a0a15","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.6.1","_nodeVersion":"12.19.0","_npmVersion":"lerna/3.22.1/node@v12.19.0+x64 (darwin)","dist":{"integrity":"sha512-MeqqsP5PYcRBbGMvwzsyBdmAJ4EFX7pWFyl7x4+dMVg5pE0ZDdBIvEH2ergvIO+Gvwv1wh64YuOY9y5LuyY/GA==","shasum":"af9a2f63493a856acddeeb11ba6bcf61989660a8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.6.1.tgz","fileCount":27,"unpackedSize":67563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkp0ACRA9TVsSAnZWagAAIuQP/Rxi1M7psxnSdB1hje4K\nRBUy3J3fmnHUyf6SPgQI3Qks6W7dRfD083PHcao/Gk80rZqdZJcbazzry2ID\nduOX17B6qrlEvWZVMP4OLTAmewJjdC5EmF2ED6Wd4CBaCz/2rQ0lWZXOQ5zp\n8qgIAGwmktCKA5wtTCsPvZStqYEVulUGjtabuUhFuyuJo5zax0YyGSuAcWC+\nOpK85ZurWERhlPaYWIARhvAOOriog7dVawk5AicvLDZfsnbfRFIfGZ28fYkB\n3jKBO+vocZCmoo2eKQ65C5RY5Pfz1xPTS+90Z0XGwL/DE4On7H+NJ7n3I9rW\nypdXc9gFjdYntHWOWwo3k3dqltroOTg1tNokUYQmN+XVLNsF+X1kTnpLIth/\n53r+/JYQApXciK1KoSdsAT7X2KhwC/FOe0xcNHGAhygi2zhY0gaXJ4wlA+PC\n964Dgirgyp7/+9Vcw06P15O6jxPC33sN5hlcK5xxGkY96S+jAyvF2bz5Unon\neG2bO8/xfyol1jRY95rLHiSo9zywhepGPS5BF1bShx1Lh38ZwDZQslSVddoC\nK9NvzLu9zBgCLDuH7xf/zuYPa4ibnIGFx7vuQEVoF+PPpUHGoHc8fVozicj1\nipybo4pZWjrFT70VqjxBLZZtSBKFBruQfB0VVONmpDOLYbfjQMeJxqjQ+12l\nMp1V\r\n=x/PD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqBElJFVXdZCyXDbPrOXfpqL3FhKvp5htM5ZBhLJKLKQIhAPZx8eSb6ZzlcxeIyGceSJ5wCHWpa9z9CBUogBQTSp42"}]},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.6.1_1603443961787_0.4553846582958705"},"_hasShrinkwrap":false},"26.6.2":{"name":"pretty-format","version":"26.6.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"build/index.js","types":"build/index.d.ts","author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^26.6.2","ansi-regex":"^5.0.0","ansi-styles":"^4.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^16.7.1","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^26.6.2","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":">= 10"},"publishConfig":{"access":"public"},"gitHead":"4c46930615602cbf983fb7e8e82884c282a624d5","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@26.6.2","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==","shasum":"e35c2705f14cb7fe2fe94fa078345b444120fc93","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-26.6.2.tgz","fileCount":27,"unpackedSize":67561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoADLCRA9TVsSAnZWagAAmfoQAIRrOEiRwLRygGCb91os\nJ00Reb/s7dqobB0UUaHneHFJY/utOJa0WRPVstrujMWuFPcUmcOxNFeWVx9d\nzeLSq3hWTIIt/2uEv/MwiFgghElUAo8NlMTAC8BsRZYFIfU0TscEEUjmb8gq\n2qtAxEqe8B2KVlZEIzQ5LxTWGJTZpthy+/KzHVos1GPKLDtevonpLyNpuF02\nPA/L1zucAPIDrZrFSTOJXc5Oa35i+9UvyHyZS8LwXKDNHsk7ccjjGVJvIvU+\n7B3gilEh+G3ibwWPRGbzmISNx21539HMdFKg4b8BJ0JIBRvueqYSho+skxCo\nLQjezUxOFEG/V26plfG9Q/SiLJtMx3ocOF2S2KwwQCHNcrYXjIDvhmQvAPAZ\nmXeD1UabSGx2IhyNO9MfV45v5eDXlbOLn+fNLPsCGrmC6ydDlipPx/1f0ONd\nt45lv/x0CV1AR/ZphwWrVBjnXWl7vcYQS4CpVZg1hNeh3dT0DefXPwMMIBlS\n5pkh4tk8FGKcFpiGFj5BW/WZhKsSX/9h7jxqQ/dQrXVU9m/Qb6zR5QJETAjz\nSGb2ZEArD/4fDkUFKEUXlkIXUp+bdjW7FtJvrhAtfsY4McWyrLpN6mSYUeE/\nKVe2FtUkdlf7m6wNSTa1y4Jn6Xo3Ov1sH9eCuoYUcLBVT7gxjio8Z9h0xSPD\nUZHG\r\n=dIgX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBkew4+xyimY3efio3F/IimKqdgXURlFpu/3PLc8tZVqAiA3CaydBTYOVhjOVyGqwPdwQQw2l+LBbaJ5ywZE6FYsmA=="}]},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_26.6.2_1604321482760_0.1577369364764818"},"_hasShrinkwrap":false},"27.0.0-next.0":{"name":"pretty-format","version":"27.0.0-next.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.0","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"4f77c70602cab8419794f10fa39510f13baafef8","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.0","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-A0BoQ+Oqqm+qaDfePLLFVywJ86ZMcQkQUKVzAhqlCE11o/d9qT6HiKvH70GXQonTvSjUIb1mrU2XSOzPtaOP+Q==","shasum":"ca1e1d9fedfee2e549a339dba0dd833da8d30e2e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.0.tgz","fileCount":27,"unpackedSize":67390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy8J6CRA9TVsSAnZWagAASUkP/2lZfwVRC1b7pif3pu4i\ncYChyGt6ty465mpxdyeW415ylhjMWeEFLZCN/uljpR56/luuS039jg4egFcK\n0BcYL19rEVYlpkPbMB8pcv64pp/+rw+lEwOu+31FtInEgWtoyyEANszqU6va\ny5L5iWpQ7ftyxyjP13r3VEoWpNE1w8t2w+bkRr9KHoNxrUMBM3QkdV7g+foN\njeIuORsy5mdT+UYTtDrhW1uchtVzvPWeutNqgjlzGrF9fkXCXo5Gx+D9fs0U\nL63o5/IFHh7yt5ARXU39CqyFGnPer0XSjp0p9EO5LQ8bh0pG895vS7/N7K1D\nZ2oJNNEXo8QYuB/WTX5MjoVHjXRyi+XHyqPccs+AMSTgqV+RFZ7pXWmsLbOX\nmCDSeqfTUe+zvgFvIZOVVtNpMMXDxF555QsmvYMNo5xKHNChQ6NPw7J3jIXl\nP6v08vBxSs5mecJYrcM7JogQ245WBKTnPfw1cZSAv5mhs4ByqUxtcWQsFVru\niqdGIYEYfB5G2u/di++UKcAE2xfqCm5ZWrNPO5aBkmD08pZqhd5wVuPp6UH5\n/iC7IAO8uSaCTH9uKqg1LyuXT5Esth2SBCZquISE/UzTxhrCHoDcocVQOh1o\nnEm3vkgQNL/v6AIOOsmDGoRU0yr/GHE8g46FgSo36B/rMUMOcKt1rtdc3TXC\nXq4A\r\n=5zVq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcEdewy4AC/8Z5ssHnMXoYC/0cqVQ1gaVzkzhdFYrR4AiBExy92Kbw3RwklUmSCBEkcHG4nQDahzu+Dn/YMuVR+rA=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.0_1607189114164_0.776010043379239"},"_hasShrinkwrap":false},"27.0.0-next.1":{"name":"pretty-format","version":"27.0.0-next.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.1","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"774c1898bbb078c20fa53906d535335babc6585d","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.1","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-BYbg3ZWPDPtTXz0gpCdzwyEkhUflfDXOvmiYW5kmEzEWzitQ89Jhi01sbszmR1f17gNOJ422/wQFLAoIxVgA7A==","shasum":"cf8446b65d51e1c2af9c47bd8bf15e65ca9b9680","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.1.tgz","fileCount":27,"unpackedSize":67390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfziNpCRA9TVsSAnZWagAAIvYP/1W+njgXc+n6uTCO8v7X\nTrCtLQdaQ8n2G3lANoktYk2/gftbIVIkOapXHZf/fgSATk7SZUZTPeD+5l1p\nNrcD4HMwmn5fOZXnEDRqi/7Pbe5V+U0txzx25LhTmKiBGtshgROMQXpWoryY\nX1G/F5je7tzawudUYDTIGtRpJTJdsLq8/tpwMC1AWTiIzmH2HwNfKxVFwf5j\nck6JLV11sqFKMjCmuAhd+k2JeDqdL3u6Ul5uAN3crNfQF1tDstotawlLjgpY\n+bBl83f2XrfySAZIk2OA3DoeXhKTwbuNf6HjsqF33fr0bW3BpFmxGu3GB3+e\nFMtsz+PzkYM3N8bt6O2xPagiIsboNzRex+ePGtVwzfehxG/IzEEo/U5w92cQ\nCDN9KgmVSj1dyIqDm8kyH3fxEVwGiZlymk3qRIpB7bbpsR+bjGZKjqIAa3f0\nxQXlfP5R/ERuQJkm3hIZvH85zURjEhttNC52tM1IWsuO9FB9HHKL3fnk0KJT\n70rV0M7IEQTI3pTyWlPVXhKcwxjgHUSmzEAeRPSxqZYtPZS7cnNoEY4+Q1sl\n6vqqf3vpGYX+IsooRrQJjVdon6StX8jGl5+2zdO2HZ7Tyk+jmvkSSDufg2ey\nMyNlKV2t2kFIteyxSDI5F9g3+21uhh6G+w4PLEukDtr4qccp9v5CBRwo5NfS\nTiOZ\r\n=PkIo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy1tL+vYg85Hr0KcnrqRWy9uRV9GVtovLmY0/Sgq/0ogIgWr2vuSg1svdwL++b5HwemSK7nDsXaXScE4Ry2QKp8/Y="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.1_1607345001418_0.9044469356101592"},"_hasShrinkwrap":false},"27.0.0-next.3":{"name":"pretty-format","version":"27.0.0-next.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.3","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.3","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"2e34f2cfaf9b6864c3ad4bdca05d3097d3108a41","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.3","_nodeVersion":"14.15.3","_npmVersion":"lerna/3.22.1/node@v14.15.3+x64 (darwin)","dist":{"integrity":"sha512-5JppAL3xa3VIsOsaAdqemtAtUFTq4YeooksqZOKZxQwTYXlPF2+t1fo/QFhCjfRucG61YE+9dcBTQ0U6wAG9qw==","shasum":"1dab8c1e36ca9266a8b91a3b2aab0e6c1223bd96","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.3.tgz","fileCount":27,"unpackedSize":67296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLuWsCRA9TVsSAnZWagAAkZEP/1eL6ukoBldS8mzG5JLi\npugjI+zK3ZERcrFJJhrXqbveCB3Tt9VUgFjitoFNBqBsKdD6SkTWWWG5qKEL\n0hs66NwaU/oW9hgIo3O+buq0Jr5BDwx78aXYFA2ZwibYrtIygsI8Psb0T8l7\n9RjtDQicifLIiLfkIYG8h+zjqsDB2ct8PDEY/0GzXaB/gT+RTP498I46nYgI\nbPxGw3JAw9TMA3tNe6j05mMIHVfM8rV90W6KSZukiJNp6jqeXWRBOLktjwZf\n5SlnpFFRIzCKh24bNw/hz/tWi1mIwCQwdIA9LYey3lkoyeDLYuP+zet1y2Jh\n9heTJ9FQe8yNfNCgxtNirdlNPkkC4hDXAtJb7bXnCzuZs12ClwS9bA/XHVYe\ns0umFT6qPAQBSRksJqFmzAEIGidUo1pyhfzVC5Aqvt/mBIrhTK10AzwCIe6T\nM63LyybKyr6l8JZSfS7uYsXe85o4ynrSUMEeQVNHPW5/qmnYrJS2eLh8seUS\nCE/qJzzYEb6HwzSxictCZnjzkA9sCqTKUbhCMiwmY9E0g/Zf73+n4bVnmjGC\nxmoI9VrucMKTdHH/LSCECmzsjHcVeTtNGyQ/hEjv81Jp0Bi8N6PEh414RLPn\nJ4lpPXEeohE6kPNBrByFvHn3PHn1Jkw9hTnvzPzSDKawbr3NSUfk93oU9/n+\nJYAd\r\n=OWXL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZBhYN1Rp820khIu7feZyc1Y7dgUoEpSfVmFMqDLaeOQIgYX6rq+wUim00bURJKAKlqwQNlXbgULiEWztv6erapdU="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.3_1613686188495_0.5727726322376101"},"_hasShrinkwrap":false},"27.0.0-next.5":{"name":"pretty-format","version":"27.0.0-next.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.3","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.3","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"0a2b94282170b6d4cc26c2d2003cc04ffebe5e3f","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.5","_nodeVersion":"14.15.3","_npmVersion":"lerna/4.0.0/node@v14.15.3+x64 (darwin)","dist":{"integrity":"sha512-SWcA9i7ST3JETWEpcxOf+qDQVsd0ScmlNTR2mduK2YFcqwdYnlyrUhmzwExK0dFXE6575Hmmu4no6WazhN+ILw==","shasum":"9d5c606645bee6149354fc4fcefb27899b51aedf","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.5.tgz","fileCount":27,"unpackedSize":67408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT1sVCRA9TVsSAnZWagAAAp0P/RifM0RD3RvJWFPxZApz\n8jrjIJUBlBvAeWBwsnSfpv1kqxiHJ+g4Vaj8rzXrjao/Zb6c0TddaKIsiKSe\nOpOB3OKgRaIdvHDr/nXpwOT9r8F/9o/nna6Tt+25lotaRvuKF5oF5kZ7a/ju\n1kGELfOlhiU0NI1mbl15BgtZ0n0x5KR/5XtuZyiVWyKTe2VVTiLpPkP772eq\noK4Iqm242Fv5sfMmRqazxD2fyQ4u4vEDIf1GJiH6FgBcwV6jw9dfh2JjVHgO\niyhjMWWkrllBMH7IMvaiiG5j7WpguA1JPG50veKy6N4bgObEyMGwl7KtOCne\nCvuB6SHmUGpEpAaGlVEttlPYK0RxS4dKQqDFxYXtPbXLn/l3f2as++pwtRHy\n6i6FRT8prv+Aa51XnkI2Jn+pOb0ovW5NMIKcIRw+tRhRUU9mB6AZrM8fWzbD\ncYJeRJBEuaAnqv34R+qiDue1iTn+1cDzKuo7MDAhhhcJXSL1K4wOfr3hyLN/\niiuH1YRF+CjNhDgDNlDxGhOZ3YXYu3X566PMGKMB9Hzt8r9kWGj/JlBEPz+F\nljKDANqXTQzg1niYbkFgyqF4dXbBwElMdvEydbyYWlRm7SwwlZcbFTnkblE9\nq+qx8Qrcj1WQ4MWyFIvxXhuYCMP7DrxipfU1BsA5oyUJxEBT97UF39+SS1c2\n1WDF\r\n=nqdA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSf8rzCqKnb1fIQdAGUZ/OMhLHyWryDKXdtaax655qjAiBgSo6xxHObO2sHDbwxjfgen0Q978Ta9g65EjZdN8nbmA=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.5_1615813397108_0.859500618184837"},"_hasShrinkwrap":false},"27.0.0-next.6":{"name":"pretty-format","version":"27.0.0-next.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.3","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"974d2f22b7deeb4f683fb38dd1ee3a0e984916df","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.6","_nodeVersion":"14.15.3","_npmVersion":"lerna/4.0.0/node@v14.15.3+x64 (darwin)","dist":{"integrity":"sha512-HdKjeRnHKAd+DS3An7N1uMwIu+xRsqYeMJINuWbGMu00Jvz2O+7CqCuIXef/N3ZbTdu36NUoGckN7W5/zTfFmw==","shasum":"939db422c273e8537c9b12d5146ccefdef5cccf5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.6.tgz","fileCount":27,"unpackedSize":67408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXOcNCRA9TVsSAnZWagAAIkEP/Au6EH7g+k5oGfKaD2cq\nh2i3AsojBtAi02sF5+KY57vzefCzp9cXJIkQfKliEOY35XzUv3DF4oN41fPf\nyO+FH/QhBWIumAx6UBC7FJaFA029mSBJMCSwW8FA/wMLAjSxovNR1hTSMu8M\ntGKXCKf9pT4cFXom9xyOo86/066AZUMVaraKRfS0G17Dg7wob7VpTe/xA5ih\nFldessUUWDw3Rd3B2GGZ9dIF33y6I+Wejb3L0bItA5MnYRtN9DBxc3SaGm+J\nx2+sryvVEPzQiuzD9WkPx9zqlM4j9r7si+BhGKV5JaVHYaUNlIinCCOzAH20\n0w00wI75e2NQlcSDuO+ZNC7CIkOCb64nqDE33/MRYBQpN8BpolWwhdlDJ2Cf\nqSA8KGZI0X3W4gEu96IgsJ3UMjyWCSwUrGU2yvThW8ZbuWWpkNDSk4P+c6ew\nH8I1HKdCR7F8jS/R7vf+lEgG3VfZFISb6wajpAbJ2sAxGEwtx/PzJjXW41Ee\nlSSSbf+C8ULFhZJCDI1gqcCWQ7SXo0cqkUy+aXkT8ZLi8ZdSsoEUD3XZgT3K\nNZmtBUX0h9/9fufHrDHsB0V/nySscrqsibU+fRZD6zWxK5KV/MEeCYhylTtl\n2iujfzBGL/U7Wus3YB+oKT3+Jb484fZdyRAy6eRm6pMKv94Y8zCanaQVjlcW\nQ2UZ\r\n=0lzf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxEcnkO0Bp4BDSkFN4Z6ivmXXCJPKsC6Kx/NGXRRrw+QIgVJwIUdnZqHk3ByZf9bEMuwtZB//puUSgS972xUb7txY="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.6_1616701197091_0.4323549634272008"},"_hasShrinkwrap":false},"27.0.0-next.7":{"name":"pretty-format","version":"27.0.0-next.7","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.7","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.7","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"28c763e6be8f57bda89238b95dc801460c2d6601","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.7","_nodeVersion":"14.15.3","_npmVersion":"lerna/4.0.0/node@v14.15.3+x64 (darwin)","dist":{"integrity":"sha512-EIZkBDWdmTBGTBmvvVBn/CST1fnESlojElgry2GTOBxFs7fbIIeyf5tb46yqIwJjiPg0oRqIExOBGGWgPw+qRA==","shasum":"48fcf4058857114c6326410894ad39ac97e84555","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.7.tgz","fileCount":27,"unpackedSize":67408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZyCKCRA9TVsSAnZWagAAxQ0QAJFygK/rfGXFg438t4fT\njh5qTQxYPmMRZWp+gNx52a0MTdKCBUXKK4xxe3yT77yCzxR1Izc47qcYsv+F\nLAbF7MRUM4Ruoicg7BR5XC9nfUgUbZ3S/xJuHaqdC5UGL9qhvt/gptgsx2ax\nnGMnlZV2iuIDz+gOkMkCP6A9JrOWu9sZX6sXGocdIFKDUr9Okc+oCUaQuLyU\nk+rlN2BP/T1Th8fg/bqYEI/maLMDd4MCU6IcqQ0bl8m4bkMKADY8rdbqN3HL\nVMUbml0mQ4TB6//cMILbW1xIpJa9xsaII6Z//DWXHhFAkZGGAGSv9zxrFtID\nd7relcq6AkK1k+Uf93pSnvjlgeg6HKBsNAz2fLwx/pbSBK+RTTfSLRKsntTo\nzldI20hN7cL5voWps0/9PEQpNCqxo5cwiRxfYngr/Sq/baoxHSo02w2qa/fF\nn8dKiMk2g2Gfg0GrMGX272CN62wyXGzfJkQUblC9scz6OuRcPC3/v88WLdYW\nYlMhfg83TNK2ZffHsAQElrIAnTE85bkE30CWAZpObh0R6sgM7QeNEwaghi9z\nYS5q0bl60iIpt3UvukO3rlLEgrjX5trkekmvP4eBNd5WsV7iv+IvKTJ5y251\nt1xVTV4oAT/z1sb9JJphv0F1T5gFvI3VHLjm4+NfHqrjl2/NTRBT8dE59Xp/\nVOa/\r\n=Oh5U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfeqLe98de1tw+NBOYXth1Vjgz5zHlVIutRic9uzOYCgIhANzxFt5JOs5T49EjTt/sTxJnM0nHz+tUKDMX01mob9L0"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.7_1617371273959_0.7513344253300966"},"_hasShrinkwrap":false},"27.0.0-next.8":{"name":"pretty-format","version":"27.0.0-next.8","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.8","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.8","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"d7ba5030e274b52f029179dfdb860349a36eea37","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.8","_nodeVersion":"14.15.3","_npmVersion":"lerna/4.0.0/node@v14.15.3+x64 (darwin)","dist":{"integrity":"sha512-Y7Pd+USoRKghYi+dj2RCikTK36AlDO2bMH5sRGMr3fW1l/vVp2Vht2tjVhXvC5T6+yMH2ivtpfI6+99/Igr+6Q==","shasum":"4dc6c34580949180a40c38957ac5e92693f10f2e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.8.tgz","fileCount":27,"unpackedSize":67408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdMzVCRA9TVsSAnZWagAA4aYQAJ1JnjF9d74XfkyCDFFO\nusQS3PztvpeO6u3BBud+LF4UVLAjUsac1YpQCmKO2kKkYT9Nmyt5NrZ8OEMY\n21+8dsW6qNktUbUFeGyPCifFWkucvmP+/mTVag5lLEGeVJK24jzDNiWHTCK8\nal4ufI7JoUnl1LGi/QZp8t1AP4E9n7sjDmr1+BTYr07v+XBcqq6Be6kZla1t\n9FgQ6pKqN1lmFDqdv9e/0Q3spJxuqABmz9Cph34FrKl6cy607TndVb/aroqO\nMPoGrz36JIE6quXxvlIQ1Ck0mpNIRMYechZAUZGXbr82DRrbbF4g/nwDEDNq\nlinxE/XhMnDfmM2rJl+C8AZ/eW6ZaBj7l9ac28wZGe5QGqFG324GqlaGcEVl\nubljhIexnSYQL3EB90JoCzzlWpr9x8bOK9VkHcRuNsqqpmh8ozZ4nbnB+aNH\nJ9KCK3KejMcNJVlQcSv97en/bSLdK36siP6bsFfzdBJZZuDURUHBiFOcNxkY\nf6/I7DuUpzFHNdedIWq2oJ5orENDa7gRAE2EJz8oWVDoXpYGHwK3Tc/8sm5U\nn5qZIKs/zP7MI2sU1pVwfbp66lbekpS29BYBX7FKX5cENjddw28G2ZF3nwrt\n0xmntWRVf4Xy4C7QUSAd/PrWDE581UPf7EOSNECaAK+4sftSXi6lhW4lLRQe\nCikc\r\n=d54p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTGF1YoPHBFuWc905y8ytC4/iy8HQLFEDEJIo5bG1SQgIhALfXfYJzh4AUqaPtxMf+TDyUjzIKKv2vZU2/OUF3LTIr"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.8_1618267349142_0.02346708839333833"},"_hasShrinkwrap":false},"27.0.0-next.9":{"name":"pretty-format","version":"27.0.0-next.9","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.8","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.9","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"d836f33f98845794b4eae8149548a81ddcfc6521","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.9","_nodeVersion":"14.16.1","_npmVersion":"lerna/4.0.0/node@v14.16.1+x64 (darwin)","dist":{"integrity":"sha512-BF2889sl/4yxeInR4tYnJQu6IOKNjZdujqcLaMoQUd1G9CykEBrpCuT6a86Q8iKXyaJMq2MMCfTPHe4TjAwbhA==","shasum":"37272be62520236a17e77038d1c9dd15a6e695ad","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.9.tgz","fileCount":27,"unpackedSize":67450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkOi+CRA9TVsSAnZWagAAtK4QAIBag7buja3q27EHTTF+\nHvPnpuS3QabuJL41hNlGpdWAFSnIWfOx6OptT1qzMy91XSBoROz72hN6bEpi\nWSxgFuvfwmnRndgoqafBTN09LCa8SikRq6z809/mhE/RgDc9F3UWmW4VSxBA\nqRunHCN3iTysZSl3PEgm+hU6RopXlKiWv9qmv2sk3z2CQw7hD/EG35ROdQuD\nZAEQDBkKXs3OSR2bjPsZGWtcFH/5Z3xBm4vu7aL87jRb/v/ywvPZqe6UEW9t\neIEKxC0PqqItD4DjPQOAJ33HLihbZ1wHImIgMFKgw7vXg9BEtPgKkhT3damG\notJZdazOxFRoqsSC8RH4/mT4i+f7yMdO2NPzyJol1D5BANjJ1sttqyRKNooA\nue/pfNQqopser97okFBYg4NVj4h1gzzSXtnyzQZGwIbVCTiE778CTPdc392x\nTebpJ6jfndb+6Qg2nLIsgxNlFRZa7+adKlae7L9ohpgNwjuxBDconqSzrJIq\nGOsH3X2Jpc8Z3bW6V57UX4QX5ZVmxHe34cVRGLYO0luGBaqCNYp1b7uKSpWH\nuiwJPXltL3v5RzkiQaQfUa3GuzrMAcUP07uET4UJ++bVJ22f+O1K3Ukxs+D/\nvf+Uw/ytIqpU596xlYMa9Yc/3odu0qgDJ9b+/zsOm7bgyBi/DrSULKDfpZr4\n9P+v\r\n=CDYs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4cC93vGRj+HgsqtQdqkSnbXCeBnFVZsOSv7+7UPYaEQIgFJKEPVL0m4Nv/UHzo89PSF0dsXtldheI31UlfK37u2o="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.9_1620109501875_0.5944508303070835"},"_hasShrinkwrap":false},"27.0.0-next.10":{"name":"pretty-format","version":"27.0.0-next.10","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.10","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.10","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"6f44529270310b7dbdf9a0b72b21b5cd50fda4b1","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.10","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-UejTifPqN0YWSvpKT04dQ9DOyR8XhPezPGEyz0LU61q2T/rUhOc36d7yFrmko4Q902gO2cTy6CktlyWd9+H+2A==","shasum":"401893221e71a1f944fbfbca97a94437a1719a15","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.10.tgz","fileCount":27,"unpackedSize":67653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpm4ECRA9TVsSAnZWagAApX4QAKJP5jpzwAWri7v2qj2u\n5K2RxIfsNkUpd+iBuGzifgnuOnqzSULSqqBeBSAvgxM/8wTEgr+eA2QKS3O5\n/KEE07EAZ4lrnkZG0+z+alBRpw1rAC1vaHX5BsbVpB4I9dt2X7zAUM+4civM\nqJsSR42Hnfx+kQZAa08Dmt227yuj9JZMU9WNTaqzoMSIXQLsaE9erK7Otbyg\nAoAD4LcBNNIQxdk0Ypd49xOEpe72lZ5yHmGIk+yhB4rvQPjbhNOavlQbUzoz\nJ74mR1SoF27F9eHhjjleJ+p2EGk0hk3FC53t+wmNRytXH7abKyMizH7+r7SP\nps+npboGM6h8C4kb3Ki5AOJV7G0k5jWHaH+uyqt88gZOzB2GS1CP+0tg6Dva\nB52cfvMinmKiEiV6L+EiVaDoTOuVgMq2looraRjzgfc+/cTYnhvVQbXkX26N\nORfbMB3+KEn32B1BB/tkFcDJOgd2pYzl7I48WT+IAi7n1TtmzIteGCis9GEA\nlIOuOpnA7rV/CHyxXP5gK4jBY/Kp/sVu0Npa9b83yChIXS/zEHpMguxnytU8\nVNe8LB38UUP7nfJULRP4TUUmZZYH52/1z0if3Vm/tdxfwAQIeOG5Ro3xHaXD\n/frVMu6M8B2y0ttQH+JuLgyFx7fluPGfNQbUpnRyEVbZ2wYmpq6MI/8P1p7U\nxwDO\r\n=2f8n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADyh6iH0aO5vfZBpAQ6wXSpC+AfHUOy9z3tYvsSfnUWAiBeE30vX0ZvZuFJGY+3xFZ+Wp4YtF2CyJGXR/oF0ZbM6Q=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.10_1621519876460_0.9198787476049779"},"_hasShrinkwrap":false},"27.0.0-next.11":{"name":"pretty-format","version":"27.0.0-next.11","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.10","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.11","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"e2eb9aeee8aacd441f1c8ac992c698ac4d303f60","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :------------------ | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0-next.11","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-jfm9IO7NFT9W7omxxQ0NEBaax94YqXBurPZUPOR4jj21SFB5eNSNEFZubotcgB6ha2oOkP2rPwmJFO+DF1g9+w==","shasum":"5badcab597ad026fbcfea6d2b6ac7f61afb5e88b","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0-next.11.tgz","fileCount":27,"unpackedSize":67653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpuKaCRA9TVsSAnZWagAAb2YP/1XuX2NnvSk1VdW4yGyX\nhcDhyP3RV3phWp+mz2KGVSWQuJ5CYAlmc+0FuKoiqpjEvHk1bNJvV5Rj4wX2\n3LPpus/Ohe+dwg3Eb2CTWasXohJ/GujMonBw1yugKlG5O1PIYmxlPc905v0Z\n6k4Czpx0CrPJtJhRrlnLfnYD0NIIQkRJwW0zqYaH5rflzS/1ZeB8SG/BCI9u\nL7DExystGhWBAe/zbV3uKFQD6Fu05GlxExHnFoe7IBX+UrbAt6WQJT3nBQbp\nGcyOHT448ikCTBYFy7FkOccZEOdhlU6hVj7QU9KzcV5O8lWtp+mE6W2Bl0ih\ncYyi1x5MxoZIRdCkoVT8sAlKFtF/iQGNzstf4z7bYjbKrjzg42f2aGFsIhKd\nXn9WLFQZKFTYaNo1lDCYHRXUO3DkfJ7RMyL7mx/B+VlGwBxS2SSML/jLHdSL\nUZxoFaLUKj8uMW2tesyxXtO+E5aCixgBGL/3sHeaMP2OD9m7fLc0p92SlrNJ\nGslPwrELD+VCX+VhGQhcM7FScw8EO96L32TXDyQtY67/E0gFBWmaxOQtX0HV\nB8P+k4iqBI4qI4c1Z15hTH9h6eqChJXCowwfqz8dlVNRd/rm2E2DeLMlssww\nHp0xn8C9zKz5AtzZq/PYD5Cb6UVNl3ItvXuSI5hONq8p5PKmXSyYgqxDStGq\ninOF\r\n=mgVr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuU7VLWQ76Mwo3pWJViGfymq5pkhw1JLekd3YK42zB5AiEAzI76y8h4vv/xnkRGmxnfnC8XYBhRv8tWrtAS84capu0="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0-next.11_1621549722252_0.765175572961817"},"_hasShrinkwrap":false},"27.0.0":{"name":"pretty-format","version":"27.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.0-next.10","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.0-next.11","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"be16e47afcc9f64653b9a47782cb48a5ca243e65","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.0","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-iqiGgQH6090aZg6B60zIi6aUkXyRhsy5u3DfMduTsRJgj5wKMg27fGhosmAjEZCqR7NAXOhdWPskJxnx3psTug==","shasum":"df5389b8e3064b5b41f55f156bd125b7e55cbe64","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.0.tgz","fileCount":27,"unpackedSize":68500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrLIICRA9TVsSAnZWagAAiuwP/iiyMquKBtqBfvWYywFn\nQJVKJBMOwLaXFjpq+eGzEuAOVpiFpQmPtpoUsprMTnYEG8MXGJi0j79/T91x\nK+Q6/ok16lEeqp6u04uY8Ncx8eiOj+losAovD74mXle29LcFCuTbh9P2f8FU\nWc4djVmw+9i3BEtTXlmGmmyFEUxqnQtcWguOjPfHXyDubymximCPbVlOobp2\n+wIpRYuw+61PgKyJXJwfOutsanWeKfRuMEh4VqjPogiXgBpaMIg1FYxb8HzM\nzOXaN6S2dzMaLpxDTwvSSQ+Tf9FyEoaM//x0JscgCeIugFitdcdJWx4PfVfu\n641NAkwBHG4TcY2qzWv3NB8vlwngyG5EJVExCh6dX1efdJXQpX5DT1A1Qxgo\nMhTS0uctwgzevwMIywcNAxrcioWDfHY5TqHKMcBn5TE1lgn4UKDqYmhawT71\nhXY+kp1CO1Y+7q9N/Uv0JEcMYxoabT02UaLATfsuJF8RYfJsQQ+/KKeYgxF8\n7mgD/xJ8VcPtX2JjmWc9Qag0jXNg8lnjIHf9/rlovvoQfyid9G9erpyFwEUN\nwamIf4mwNuZ4NEyFYMdCPdIhxi8u48ChNL0vFoNaWqLXCLY5XBsXyjw36btX\n4Knm/N6EPKOjasjcdf3a7cu+4LnFbjOqOXtw+DVp7kIZKvcEegJn39lXRAgl\ny21j\r\n=LTLz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbu9ofz0D8Rza0hhk2VvVf1teA6ZYanq3O2hGz2m9vGAiA3MHB7Aha17ysb1V4Aiv7JTNma9ZOa7aaPxDQihCrBQQ=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.0_1621930504103_0.04777645672754249"},"_hasShrinkwrap":false},"27.0.1":{"name":"pretty-format","version":"27.0.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.1","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"2cb20e945a26b2c9867b30b787e81f6317e59aa1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.1","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-qE+0J6c/gd+R6XTcQgPJMc5hMJNsxzSF5p8iZSbMZ7GQzYGlSLNkh2P80Wa2dbF4gEVUsJEgcrBY+1L2/j265w==","shasum":"c4094621dfbd3e8ab751964d1cf01edc6f88474d","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.1.tgz","fileCount":27,"unpackedSize":68484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrMwmCRA9TVsSAnZWagAAYu0P/0uStRMUIl7hSL5SyUid\nmxczAR/+GVIMeTQLeI7tMMJneK1gnWsVEqycMd0UJ0rsdfEvnuqPgGBtBr+h\nND7DgeYiPcjc6InkZg8capJtcDu0esvWMxtnrAQlwbgVteFrb+k8AgqkL8zX\n1t/McpIWGbzLtbsIIxBPeCX3+zdtRSqI6pV0H3Z/lugRV2TEer1YXsPtTMZK\nIGOqn2XkeRZAGycWCC7AtrVAbypVTjSgzC9z/RKLTi4uuKyYJVROswqhh6mb\nB3uM7LYgggHXJ45lXBlEuqfqrsWKpsnaHCjpGNKFgzu6PQ0iR/tqfQ918YM/\ncFngMhg8z3jnNoKIRD+PSTg0l1FT1IV6x4tlVpNk7/+RJ131Er+cz9PWTWPL\nZkUwkkC75g0HuDRRVNC/piI+NfEi/MdNTR2+SmdIbmSG82Isiokmoog2c1FN\nWWdRHf4wuB/SsKawBbXVuva13JWk7yHea73n/HL83lD2Du9e2kOLy57iUYfR\nfDNOmSoQI688U7Uwyqbga0nMfBf5c67uSMxsO6hJq/uSIi1ylZ32VI3CWsQO\nGd01WVWZmOCWG9mRFrW7oevUT7Lcc+IhPo6MaEvhbTp+mZjbzIudEWh6VfMJ\nKjG8asV5jqGhOK+NXDlCAu9z53D0ohISAlpX9AxTNNj9V6e87+gMBKx/OF/t\nBnqf\r\n=c0Up\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCj+UmXDqoOEEmPU7pr53Umw/2+S2WmARpmO/IJCNMptgIhAPdnW/SvLDoAODWZc3sNIrwdrC9XVGf4UkoDL3ZNhAgP"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.1_1621937189610_0.1666170729839298"},"_hasShrinkwrap":false},"27.0.2":{"name":"pretty-format","version":"27.0.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.2","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.2","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"7ca8a22b8453e95c63842ee6aa4d8d8d8b4f9612","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.2","_nodeVersion":"14.17.0","_npmVersion":"lerna/4.0.0/node@v14.17.0+x64 (darwin)","dist":{"integrity":"sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig==","shasum":"9283ff8c4f581b186b2d4da461617143dca478a4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.2.tgz","fileCount":27,"unpackedSize":68484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsi5xCRA9TVsSAnZWagAAf/IP/RQBw7xE60RlsuWm50e8\nmnhuMmbKVleFXKluPr0W2cND7seuiGm1TPooLySC9o4FYbG7DjPPoQ92dLvU\nvO3Pg18HWiRLHTVR7k1S+Yj0Nh4H2ecIC9cGorg5WPvNS/IPFs0rIBZhHNL5\n9VnvcXh11HBsVcsHJ4UzSqNQPpqubRodviPA1iMszE8Wng2efMXwVS2OkYUv\ngPRXh6wAE4bmaYdYhdGI0UwU7uB4ETbmtB5YwYg19Neax8aqon7IQm08ne9B\ndKpPSHjDfGhbB1zyKGcsPH06wJlvFbxQVcNtnia503ER8Kp8efE7dzXjAPxt\nOCGtIEOmL3Xj4CEly9SavEo4Y37Xw5PDi5vhThSmaswt5WTEL9nXi81AhcxW\nrcAGc1V6QhoLUqy2Duj0JmG3z/tYGOqVDwYkXsHXy3TGzXlsYxIIFmcR5/jm\n1BwNKBnlfrkkUj5LyUdp9DIGY0+E7r/d9nO8wbAHbVYRNxLrwv/zIPDxGsfM\nIFyPpVSnP0c9wo5gHYKR1O0zNsOMSogrdKy+1r+Eg4NsBwzl6sGnFqVs9d/A\n2lGPO9NLPu2/R1lYX153ow3Rancm9mnTfiVU25eBm0h+2vAmw7jAdBmIEG8l\nR4Z8bCIvFEMKOojpx1Evgr3HAsIsY9Zgm/92x+X6it048nduJILgwZZYpQ7A\nAJEP\r\n=L026\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkJIM8d84uGZ6HpGgsTbIYvlCRHD5MVqAFxQQomkdzEAiEA4hv3XDSZPGzsiTjxChm0M+h1Vjn2DVGq0c0imcnY2Mo="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.2_1622290032622_0.30911559142867273"},"_hasShrinkwrap":false},"27.0.6":{"name":"pretty-format","version":"27.0.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.0.6","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.0.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"d257d1c44ba62079bd4307ae78ba226d47c56ac9","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.0.6","_nodeVersion":"14.17.1","_npmVersion":"lerna/4.0.0/node@v14.17.1+x64 (darwin)","dist":{"integrity":"sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==","shasum":"ab770c47b2c6f893a21aefc57b75da63ef49a11f","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.0.6.tgz","fileCount":27,"unpackedSize":69174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2gFgCRA9TVsSAnZWagAAQQAP/0Agmh17kFnoOne7IJ/0\nC/p1r1ZGYDiojFRRFgPN66NSV5qebzkapLD1tcOCtSRhPCKJwuqqucPuKVe6\nVkR7asBjP37uBqfxQsGWcTFeUbhmURXjUQVLwfivs1Nr5cq/yvHBeIV1/013\n/KGt+yPcZvH9k1QNBMBX/yWwXgyj1lqflHGnNT1t3sCy571u02giEJkGcfcx\nvLrnMvZoQ0M+P4bHmDKLKh8+yxiqCJ/9pM4GwNMjIoKaWVTMuhXvAf/vpW4y\nnSaCwEaNQnZk/9qF9VAhSesvF1IS2JvopGRudCRXlR+hWKnIANmGxhgTZI/+\n2cyQYSem7DZYv59ahRwr/j+Ra4OYPIpHjcvGwAm22n7wSKA0+tCo6TC1Jmzw\nK7xWwpFAP+p03MfLwwyUaJc1BzzclQJ1w+jCXpRynMtB7f7flqxWpUzA6G3c\n+3zKfHel7NDNQq4/zE3g1VSTcP0urwK9A9qQv5N2X1NPbObhUFt/sWnIeWte\nAKQ7OiXZQxE+KsHLs6s9v1D0KDrtp3LXDCiml7rNi2vifZQJXdE8bBMNQRVB\n17hNHn/cHQDofKE6FEXG51TBUOswzZAxq/M9OgXSrx/QcgZdYjK09GHqDNR1\nPlfFXoVoWes7XsfjnVfYJ11HUVkxPAJ8XQL+dy69JMQgOE7PZ+zTp8O5jIlK\ngwfE\r\n=pX90\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVfRwD5/bGxLfZESlftb4x2Ae7adojS6Rf8Rv5hay7yAiB/7rWRgnLL2/n0XZ6K2doLZ8TOXaTl/r+FOJX0UhWgUA=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.0.6_1624899935644_0.5213734473603584"},"_hasShrinkwrap":false},"27.1.0":{"name":"pretty-format","version":"27.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.1.0","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.1.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"5ef792e957e83428d868a18618b8629e32719993","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.1.0","_nodeVersion":"14.17.5","_npmVersion":"lerna/4.0.0/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==","shasum":"022f3fdb19121e0a2612f3cff8d724431461b9ca","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.1.0.tgz","fileCount":27,"unpackedSize":69290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKLeICRA9TVsSAnZWagAADqEP/0q+FFQzpNfaqjEUs1yZ\nBa7fDJX/rXYOePtk251iOvQmLxbNYURTTKKrdkQB1XJYxOcfbRcrnmBGknII\n12TKnXu+3fu/Tzx3wStosNlLQtd0LAqSXoHEGf2I65PDDkuJVHfe3m5owZvb\n45M+KYtCixbqksKG0NoiroO/WmYU0qpu7Y8GdxR8+7H37jiLrzlRLkuECQnK\npAhoTIrssC6IbFf+ethtR1ihL7K/JohzEv4MxYIK0Jw6MT24ezqwWQLcECzA\nMas9Fxerjlv/1DSyM/v5OyBP+nIBgnGdZQYw/p1mNHPywlKkU0LcVaun+pce\nNiRMcLtCbz01CnUNu70W+U562O7wtR3wBtM9D6X+I5cAVW6mpRYCjycbQeCV\nkXantXwi1cdgx9wRhSBpI6YH7AvMfCwWl05ZC1+JHIIyGI0vMh33/pCwjy1C\n1ESx68cOiccLPSJEW/ch2oEyGwiiIQegNISHEkd31axUSScuqcqKJCCEEByZ\ntIM4I4qS7z/hN1mvjFA3GwwjmTZGM4EcdiOo2V+43EZGZvN98Yncak956Gor\nR5TWtak9l5x2x7ACGuuQzoAO+sJc1ZFV7cyzrbpF5YuY4b5+IvcyleBnAxCw\nH/FD2Y2U4HWBqvs7VtDgc8YgXhTZpOe2I2b+zSA/YKqKAZobnOWF97rLQ2sU\noAnb\r\n=phYb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEuHHpMjddH4qHLJQbDBim9WazwraaVtlvBN74m61uJZAiALn93jdjl3c68zye0OmzDG/p1nPD2mSaHvZ5LnMcCHdg=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.1.0_1630058376503_0.5870293893812262"},"_hasShrinkwrap":false},"27.1.1":{"name":"pretty-format","version":"27.1.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.1.1","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.1.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"111198b62dbfc3a730f7b1693e311608e834fe1d","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.1.1","_nodeVersion":"14.17.5","_npmVersion":"lerna/4.0.0/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-zdBi/xlstKJL42UH7goQti5Hip/B415w1Mfj+WWWYMBylAYtKESnXGUtVVcMVid9ReVjypCotUV6CEevYPHv2g==","shasum":"cbaf9ec6cd7cfc3141478b6f6293c0ccdbe968e0","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.1.1.tgz","fileCount":27,"unpackedSize":69290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOIx7CRA9TVsSAnZWagAAVf8QAIYRK5By1vrocCPYfmYf\ngA3t39+eW4zcc172sddTh21iptOmLUc13Denbgo/7+rXjzysyto6xKYdB9Gu\nwG4Y82vurqUrOqLiJ5kIipJADRJEUFUghtY+Wk4H22wg2mirpCt/Qg+tFskp\nAjGAdmFERUE12Rvo3sPFuIAkOZjnsN2iE/tHnbYs7ogFd0+gRGIZb0WasjKR\n8Dqc05Tu69aJSvL4zDTdJf1cUaLWrrW4rV7B8lHZbbPwKFBuDvNSfgXKrbLV\nA9G6L7QuR84kPnam3nPUGB4ypFTT52//M8pCNIFyDyFcrUBgSfRurOyNNOYa\nGyfhim6aLaOe+IfhmTmJsumxxFzn1rPygFl0iAJGCnMNWwOQbM2rqmcNHvi6\ntRJyOYMlO7Z2aWSXbrGwH5kRU5pjSeim/ic9x6WComQtREoEiJLbtvNhxfRi\n606E9/H7sC018W6FUvET5aUous3Q+KA5FsuJCB/U0RQno7fP9yVri+ITzTkb\n3GOHIyT3Vb3Jt8Bj0hrgX1Ypru0igkrLEh6e69RtCJSDCiG/0mFqhDkr9P1A\nWtiHVeOcogxud3teIGWpw5Ykqm+DeoLDXLSQWI7GoCNF6F0f64VwDW28Yz4t\nEOOu1U0juBrI1bw8YiWyBpFJQCpSrJkvgh/U3bhOIJdlVUj5YgEecrKmvY+4\na9mM\r\n=xvTr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCofl9PkNboQufU9so0uhQBBxjR324iPB/xpGkkcjBMNwIgcf6VwEYWFNNqxz33Us0AOrcEycpuHq54YQB/2QY8UUw="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.1.1_1631095930894_0.8509631842344652"},"_hasShrinkwrap":false},"27.2.0":{"name":"pretty-format","version":"27.2.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.1.1","ansi-regex":"^5.0.0","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.2.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"b05635c539f8f673dfed5bf05ea727a8d5d7bbe2","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.2.0","_nodeVersion":"14.17.5","_npmVersion":"lerna/4.0.0/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==","shasum":"ee37a94ce2a79765791a8649ae374d468c18ef19","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.2.0.tgz","fileCount":27,"unpackedSize":69288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPwaKCRA9TVsSAnZWagAA+AgP/3sVHt3AnVeLg25ch2HA\n16SpwDZBQeL8jUczRZNCZDRvaMYPUX38nCQJ4bku3NnCr9VGQrkpRZBe0pll\nyGlcXEVnZsKdzI0jODtz7yBcndw4WeG0f+mfQcBJocDQng0IXO4zx3UMsu1c\n/0jUInuI3J4dhEVaY4MTAJvSwQ7UIwJLxaLc03K/6WX2FWjlrThOizLh2NYC\nvxDfQUvOK6LYrnv76MCdj+m5P0J6KrbKqMZpftTvzK6rDYLYo6d0NLX8l5tj\n+Z44vKIy/m8DrnlKoRJfNlpS1NQ9AFSmV7d+V2/E1iyE9QR7enReqn3WoezO\nBh9hCejupyBhoR0veRXuYyvOuaiBGG+jCFVLM/6dMYeClWBl9M1Zaqn2JTgO\nTmT2gMSBnC+ClvNsqgh7p1rmJvsgF6OX8Ih0wAeT/AGUfzBqPoN4HJUlmdYW\nxPVRrtyBGfbcp9joP/v/ieNvyRrA5fQtZqOofPIC90H8AYrflJC+VJBvekIY\nLjkvJk3edJFtQZEQ4dZXExSPxPrab0x+HepArPvtn//yWHxITkqrrUZCRL8k\nVvaeM/bx3y0WonCtuxdtQeceSQeBc7itKXVo8PDhMbVggRfXMyYJrxqXFTJD\nfZb2JtF0MtUlj708eMWyYZkaErZo8uB1MrYJqY0RkhW612o+3Hcf6Ag03Sal\nciK+\r\n=Pv2P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHZVXwzZqZq1eGe7Et/MORJ8/xMsRp2teWadJTEua06QIgAMaUsP//R+h4K9wlRmGHF+cCn/2JGFT7en4EnyWR24s="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.2.0_1631520394504_0.7457474256325933"},"_hasShrinkwrap":false},"27.2.2":{"name":"pretty-format","version":"27.2.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.1.1","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.2.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"f54d96fec55518640b900d6994b2c4153316d1ed","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.2.2","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (darwin)","dist":{"integrity":"sha512-+DdLh+rtaElc2SQOE/YPH8k2g3Rf2OXWEpy06p8Szs3hdVSYD87QOOlYRHWAeb/59XTmeVmRKvDD0svHqf6ycA==","shasum":"c080f1ab7ac64302e4d438f208596fc649dbeeb3","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.2.2.tgz","fileCount":27,"unpackedSize":69288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxuY1einYrCPexKcfPv1hcrueUmeLXfaWyl1HPr9q7lgIgYOmbgxAAL0vRRwOIohbGL3pNj5FAcgJ4ZP1N6NhXJPA="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.2.2_1632576906925_0.7330380426794147"},"_hasShrinkwrap":false},"27.2.3":{"name":"pretty-format","version":"27.2.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.2.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.2.3","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"ae53efe274dee5464d11f1b574d2d825685cd031","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.2.3","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (darwin)","dist":{"integrity":"sha512-wvg2HzuGKKEE/nKY4VdQ/LM8w8pRZvp0XpqhwgaZBbjTwd5UdF2I4wvwZjyUwu8G+HI6g4t6u9b2FZlKhlzxcQ==","shasum":"c76710de6ebd8b1b412a5668bacf4a6c2f21a029","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.2.3.tgz","fileCount":27,"unpackedSize":69288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLMYlAtJNE2eR/6gzzfHFeLpcR7gzc6gVUBdtrmxgM1QIgOdd0Qe0PX5cMSDzEWjEu0uIfqQE2W88EpjmyNlJFDcY="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.2.3_1632823880653_0.6784063197390855"},"_hasShrinkwrap":false},"27.2.4":{"name":"pretty-format","version":"27.2.4","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.2.4","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.2.4","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"5886f6c4d681aa9fc9bfc2517efd2b7f6035a4cd","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.2.4","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (darwin)","dist":{"integrity":"sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==","shasum":"08ea39c5eab41b082852d7093059a091f6ddc748","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.2.4.tgz","fileCount":27,"unpackedSize":69288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC76dCifCC0mFXFfQLEs9AfSUMd6h8yKuLNFjV/Iw45QAIhAO+kwwGHaQZkSeTJA3PIBWbHxFfK2ROOFdfIm/+DOGo0"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.2.4_1632924287010_0.21851018986795312"},"_hasShrinkwrap":false},"27.2.5":{"name":"pretty-format","version":"27.2.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.2.5","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.2.5","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"251b8014e8e3ac8da2fca88b5a1bc401f3b92326","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.2.5","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (darwin)","dist":{"integrity":"sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==","shasum":"7cfe2a8e8f01a5b5b29296a0b70f4140df0830c5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.2.5.tgz","fileCount":27,"unpackedSize":69288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAsAhKy9cOYAS4JySi+AaFSvhD9XtJ1quh5q9pkw3FBhAiB1UGxnHIhuPpy2kmq2zCLjbpka3n2us0w6pDsIpNGm7g=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.2.5_1633700359574_0.7141862870197635"},"_hasShrinkwrap":false},"27.3.0":{"name":"pretty-format","version":"27.3.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.2.5","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.3.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"14b0c2c1d6f81b64adf8b827649ece80a4448cfc","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.3.0","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (darwin)","dist":{"integrity":"sha512-Nkdd0xmxZdjCe6GoJomHnrLcCYGYzZKI/fRnUX0sCwDai2mmCHJfC9Ecx33lYgaxAFS/pJCAqhfxmWlm1wNVag==","shasum":"ab4679ffc25dd9bc29bab220a4a70a873a19600e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.3.0.tgz","fileCount":27,"unpackedSize":69288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6SihF+OWxvTDfYTHi5gRb470KxbN35y12qGBQI8AyYAiEApT6anfsfQeaM28+YSDpeyAOne2hur8wIpSIFxQ3VqCU="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.3.0_1634495685899_0.8009134202052051"},"_hasShrinkwrap":false},"27.3.1":{"name":"pretty-format","version":"27.3.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":"./build/index.js","./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.2.5","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.3.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"4f3328f3227aa0668486f819b3353af5b6cc797b","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.3.1","_nodeVersion":"14.17.6","_npmVersion":"lerna/4.0.0/node@v14.17.6+x64 (darwin)","dist":{"integrity":"sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==","shasum":"7e9486365ccdd4a502061fa761d3ab9ca1b78df5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.3.1.tgz","fileCount":27,"unpackedSize":69288,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRnWBfYXRrpy/2sKmhorqeVumtj8mKzp/3q3FBCnWqeAiBvQCTCNhh7dhSO5ZpKTD96yEtYYrwn088r1qMeXGusfA=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.3.1_1634626651703_0.4872332383578355"},"_hasShrinkwrap":false},"27.4.0":{"name":"pretty-format","version":"27.4.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.4.0","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.4.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"0dc6dde296550370ade2574d6665748fed37f9c9","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.4.0","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (darwin)","dist":{"integrity":"sha512-n0QR6hMREfp6nLzfVksXMAfIxk1ffOOfbb/FzKHFmRtn9iJKaZXB8WMzLr8a72IASShEAhqK06nlwp1gVWgqKg==","shasum":"440a7b86612a18b0865831a6d8585d989a5420e9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.4.0.tgz","fileCount":27,"unpackedSize":69977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpNd8CRA9TVsSAnZWagAA1CoQAJHxMZdPIOOwwXLuxmJx\nihHS8CzEjrSZ0qvGhzHDqXE+k+Jc7RZOaptc0p9FEHqD82l7gEcBYoGKzP5O\nB5FMB3UDGDv7Bvufs2Cm3o9/khrFpqGc4EsVvKYD5JlEm8t2+tj2awP5D5SA\nuSFvTb5ZQ5UR8gwn31eqp6y4j/ioDymlCz1SWFuTInrjobTDD/maromCbe1h\nJmio0gfYc4nolIM3wB24EFWSUremN5v6s5A7jjsp9ED28Hf3bgsPHxh2qVSX\nm0WKag2x5wFELRIZx8U4uqQuVjftAioDAwQO0s0+KsI+WmPeNccKLhhFVzzx\nsO1cUuiBTJ5K0iKiR+gV0A8MoZW+wrnbytMq/H2QbuAlrx9sXtZelDVtwiy3\nqOwCLo2WGQcbuoNAZZiBEIi0/4Q/uzW7y0KZC5IVlsQfJB4UN98LZz9FonYY\n34/WSAj/aCfgs2+Tu1QYhPA+zSKfLgrmHtkRr8++IPn1WFhO2WZQl5L7qBzb\n1GPRZAEpOCqJ2WqEIj1OJUWK8cmVlK9zq9nbm5hEnHRdeNmoR0BimQze25q4\nywgzNaQPDcZvjBwwEP2IZem+LtC2YU5HmhvanGqN/nV2EHaeGPMJrbHPqcSH\nkRrzoyI8U9lP+v7kX9XiQ7r3ZLfANj/6rTPWfee83zy84u5qhNZPK/cAH9lN\nPgwx\r\n=sR+l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJb24Kk62hIOYjKFtzq3OTmF4ziIuK9ghmlAQraTfwZAIgGrEaWwg0+Y2++gGVreZasRXhVVx4HJFniQoockQthl4="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.4.0_1638193019856_0.8309245901723756"},"_hasShrinkwrap":false},"27.4.1":{"name":"pretty-format","version":"27.4.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.4.1","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.4.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"fa4a3982766b107ff604ba54081d9e4378f318a9","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.4.1","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (darwin)","dist":{"integrity":"sha512-JJw4GzG0vP5dHA+D84zryrX3S34B6rZaJj6zsrN/sdNpcUNf1X6aH/7sPSqwtAGNXCxDqMa1wAKX4EH1Tv62aw==","shasum":"64e20137590b3232744a36163237981337c90931","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.4.1.tgz","fileCount":27,"unpackedSize":69977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpeKyCRA9TVsSAnZWagAAkk4P/jOuYFhTiomfojiBuWS1\n8E9Uk2mSIpAh6imxTbcMgUCxFVgBwSWpdG9id+VaUg1BfYJcyJHk9Tt/vNEE\nC+l8WiC6RdnDP4OYy28nqGH2ka7Bg3Sv5YaAzz3yYaL2wb0hAlEraUKCn3Sv\nuyHFJ9YzAPyfb5j7R+Jc/Ko3a2YUOfyCjrx5Dccapust1K2j1AAzmA8OqqGq\nmzjzbvaWSxJtHf3pDV5tZRzlib9QZl5hkbeiTgNYYLD/K7b0VkfjJq8azF1p\nhbGn5hfkifxTzSqL8PuBwjYDYv7TareC5PJ8RNaFFYBQEqdDmIgy3CBKIZQT\nmHhiCCxLvW0r4JX1pYavChqciwKboSFSlz3lIVhW8YC/Tv7ZHImBbgmePTbT\nz+HmAjQ7AikxhaLhTKl3UZKwkuvgphGqyQZVVcIZE5roIB/aS63vHW/l2Afk\nhQfSahL+rb40cO62dShJFYpwW5yEYwDsYMDgfUf1BpAwx9egZQA2vd4ke/BD\n9DZO+467aqHjUO899d59WwDPDrfGIVYZXd5nXapgslfQ7RQesWNS+UOChYIG\nOTfqydyWFaF8SboXF2iXZ+uCXjX/+PfQrpgsUkEBs8utBlL+gjjH1NzIJG1c\n8Tth6hoOPVgplzkBz8Ch4HHFkguwuLTBnyUQOwBiQkSCsDX2lj/xAcgwRpoO\nuucZ\r\n=PdZH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBjYckBHcmX2t8SLAU3DqUvx5d65WerScqSym+PwPkmcAiALY/kF19/uDZc8Wab+QefMdRzJhoqcZD+plb90io44VQ=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.4.1_1638261426799_0.08379534400524391"},"_hasShrinkwrap":false},"27.4.2":{"name":"pretty-format","version":"27.4.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/types":"^27.4.2","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"4.0.0-rc.9","jest-util":"^27.4.2","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"7965591f785e936ada194f9d58f852735b50ab1c","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.4.2","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (darwin)","dist":{"integrity":"sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==","shasum":"e4ce92ad66c3888423d332b40477c87d1dac1fb8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.4.2.tgz","fileCount":27,"unpackedSize":69977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhphDCCRA9TVsSAnZWagAACucP+we9uul6FqdswOG2bKYE\ng8HJ3iF0NCeQkXCXn+EDCP8/fBCByq7euGtO7ZkqRNRVEH0QjHhFiBb47syX\nmOwpFmddqcpvlbc2zlRg567tlEs7/vc0632JRmdcyLcgkB3vuMxGMMAeeIeN\ntT9iVQqVai7xzDsgAt97lDeNvcAXfDWSSHtwEtG7I+ma4g5V3qpEbyI4f8Cq\nCQ5PI3gxvB+K/BGPSWkkOR775AzinFYYCGZqTw1lmudd38iex8BwvjBB5nNh\nb1Nb02OYdHEM6fTZqu8NYKFYSIJZOYFhIQ1trT8GJ8IyP5TFObxoJqTcNlOw\n7A43icRL6mLhr7pN8Y3Uj78KmvJXqn72ZtRtAT9NXkt+iur6/YpekTh0rcm0\nZO3PQAI/K6mvCulJc5AAKoTKtqkQOqSMvqx/SRvMlpxvclmy0vustG8PE6hU\nR6xnDrmSWezrijdFtALamJbASKmi19wTnsNcuG6gnJhX4PGCIn2EwD6hVGy1\nUslpSlaQHHmjl5bfQ67lKfEPJXhJZr1onDshWC2aeKM3by7RJ92WHxGaCH94\n+lsAc5kl2OtcVGp/93N/redY6Y6IdNicxAOzy4OQyGxqRTc0TW/SkmmjgV/c\n7aW5fnIIoY7hxUWuWmBU/5rMvNxjTquKESYs8M5m74G4Vu02GHiWHyYsWJVx\nKaT4\r\n=dMSb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKsJYyoaR4FA/i6WBKo3ZZTfNP/UlQLaWrq1jnqUebvgIgXE8yrWyTqRbx44Fg7M3xDAAu6sIZIh4UcavFkkJOP28="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.4.2_1638273218468_0.20123205262825183"},"_hasShrinkwrap":false},"27.4.6":{"name":"pretty-format","version":"27.4.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^27.4.2","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"644d2d3e53536b0d67e395c0f35f8555a67beb1e","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.4.6","_nodeVersion":"16.13.0","_npmVersion":"lerna/4.0.0/node@v16.13.0+x64 (darwin)","dist":{"integrity":"sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==","shasum":"1b784d2f53c68db31797b2348fa39b49e31846b7","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.4.6.tgz","fileCount":27,"unpackedSize":70017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1NJDCRA9TVsSAnZWagAADGcP/2ypEgIC8IeRaNividZk\n12BuCGKDSc8+1dOk4ynqUhclZMM+rnWZLWqeGTEWiHyXVpLsWKyOavqA3DqH\n0Y8zcYRvinQFzEJCLalDGTgUJRcKfIYVzeXBPoyV+JcfEzW9IG3csrZSFauT\nuZ/5Q36wi843r/vc13wN+9IN3OnJVflTGA8iG80u/B7q3pzBhbNOJfMVcCpW\nnTIkgLjXzly58lUtryo8EWIIwEWA3VYH/v/A7ClfPuh2Wmp5mqTZSsAArU77\nTyhg8QDJoKm+lq3/sw8b8Z3HYfuArC4QF3oQTvg93a4yD3J2iaboCVKCumqy\n43nnqHaknkRR+YinDHPhon9m6/faxxAWP6T4a1S0QcE1jBKMzUCBTWs7QENB\ncG8KgRR+gepennaK1LNNe7mBxrOE32YXJa++kn6gYv7Nh+jKajXCiAyO3urB\nirzXZvZlEhNxYqBwr8OwYsCy6LXbfZWlblnKTGC6YqrMe12pQFxtm79+sEgs\nPBqKFac+gUroVkUNY8BxRhEGz1XO5dXdL2iOpsFAvor1cxPX1AXNBcFwKks2\n0kgGHCA/ArK/M1ebyEalj7/mobB/7OVR6k5eCuozepF1CfgXP5VrDIAexldV\nZ7Hhz9cVY9l/ii3dJVjFUXwCSVMV6cE0BG9/dcIZ+VrubJx7iIcNSWA360sK\nko8F\r\n=S8XD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDJJKfmndKFwpQn56oiTWK+M8MRWyaUbJuYzqWjIY8mFAiAbSfjpR48K7dbgAMxToq0ig3sHSaqYPqguAmdqIdlK0Q=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.4.6_1641337411542_0.9835501585120774"},"_hasShrinkwrap":false},"27.5.0":{"name":"pretty-format","version":"27.5.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^27.5.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"247cbe6026a590deaf0d23edecc7b2779a4aace9","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.5.0","_nodeVersion":"16.13.2","_npmVersion":"lerna/4.0.0/node@v16.13.2+x64 (darwin)","dist":{"integrity":"sha512-xEi6BRPZ+J1AIS4BAtFC/+rh5jXlXObGZjx5+OSpM95vR/PGla78bFVHMy5GdZjP9wk3AHAMHROXq/r69zXltw==","shasum":"71e1af7a4b587d259fa4668dcd3e94af077767cb","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.5.0.tgz","fileCount":27,"unpackedSize":70017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/kp2CRA9TVsSAnZWagAAd4cP/jWsJ2cwFyvZdW52LF6c\nbewMhLdU1SLEc5GRGUWJloZe5rhoqUUizKGFZsn6YKkREvs5CLIdwkY5sOxy\n1AjTfaBJWag0GRRfPh/7GdHdLJTT2h+T5Hdi9WQc/7jInXlzy5x2nIRAngSi\nf1PuhaHQapYB73FI75hzXrBGZaHdZNFbYGJrFwEMqGMNybTrqZ4ke1RDnanP\n8t4ioQeMVIf22/590uhRF19kO8/Y/BR8kddIQnzEj8Re7bkUYfpqagQeKlDi\n8EmwoZe/vpLGwbAOt3aR4XjahoECKwjHmt6/gE6fBTB9cIYGK/03xmG3+Gfz\nemEIsTXqOWO4WevPTg6a1p6XtI7NRmhmU62LCmpsKRk6TxWYmvWULCJ2LOh1\nA2ZdGGVn/efai6hDrMGiCnvKv4wTsC+JCipH5mQMB3iBrCaOsboR7JchabLC\nLnXx86AJcVdkc+QQdT87HSTfTOFy6L8/0Kwk6lB8FqZqKUHKA5r0ccoqSygz\nDrdObaXmgdNmg2BQn5kTOviLjflDt3p9WtD7R1eShgHqo5g58kRagld3NA7S\nAL8DCQmW1q4dWZ1xcFSWuEzJmRHny95TFZmH1Wu9K2gV0Kb/TtrOQ11J5bDq\nN5BN5kJmaEnrJSE2ly/tq6k8tlXQxca0uYmzL1Kmv7J9w9ars783tRgldVnw\n7bP1\r\n=KVkA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMSdxGm+UgElWSXOeK4U5TdS/MIV0vIuQheK82DIMFggIhAO4rFjmxHuWMxswvsNb7BzKZgpa3eJfwB9RjaL7iGIcj"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.5.0_1644055157991_0.7455466791377452"},"_hasShrinkwrap":false},"27.5.1":{"name":"pretty-format","version":"27.5.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^27.5.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"},"publishConfig":{"access":"public"},"gitHead":"67c1aa20c5fec31366d733e901fee2b981cb1850","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@27.5.1","_nodeVersion":"16.13.2","_npmVersion":"lerna/4.0.0/node@v16.13.2+x64 (darwin)","dist":{"integrity":"sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==","shasum":"2181879fdea51a7a5851fb39d920faa63f01d88e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-27.5.1.tgz","fileCount":27,"unpackedSize":70072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAktcCRA9TVsSAnZWagAA7RYP/0AOmeyoyb/fpbukfIpf\ntzXQsN/kvoSAVFWAafCUhpK3hMGuTvbsBmFbv0ySo+R8m7JGkWityuIr/yMd\npP9sjWSV5nafwG1alXbakh8hUtfwrF4s3qIGxv41rQAvVmxVSHEiZn6r63mD\nx3Mng88odNgW+x6lbwY4LJD1ORkJWoc1RtOKRLD0cgRKVfxkKc17AvZ/5mBS\nRMnfyIglisxCevPTTBZSkqXE4+fsNl0VzwE/53+BtxusFjbuWVeViNxevX56\nzdiNEGmD2SBsfIV/Q7Ekhq4+UCp8Hcjgl9aXIv+n0oWsy1cYvXqL+n3yDpMr\n9IaKHejooZ79ZMQQmpY3c9oEYcgoV63oVejGQMUUTSnojoz/J/aSIpywfrAx\nTx8LtAlInHx5hnUUO5qCpqrCLMz4PV01fSVh8Mh4sP5IVIWLkGXU6WUHVzZM\nxu+iHCJICD4sxBXQHK54GAGsdP2DwT4MQVX5kYJo2T6uh48bauUR42G4SqXE\nSHIV/Q5QmsvoOjwdn14/eZZAUIDfXYDyvEbOD2w8o2nt+594Yu0d+9jsvLTQ\nPZdzGQfuPWvOur+J0G6PE4HjOopx0xa6Wk84uIIu8iPKKLVaFv/TgxhBb7d6\neoFa3n71ltM3YR6xkQlq400KuOCSos0P6mcRE6ziYxCdsUKm0KSUUWAKA1rV\nBkJ7\r\n=m2Lf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDABsJI95/ss8TN2+V+nzRCIrCoZoILBOhhDWy7n2bOLwIhAJoNnu/EXsUGjOx22Uyh6Sb+ueWblI8hdBNK5aqFsWyK"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_27.5.1_1644317532029_0.3595634915881212"},"_hasShrinkwrap":false},"28.0.0-alpha.0":{"name":"pretty-format","version":"28.0.0-alpha.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.0","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"89275b08977065d98e42ad71fcf223f4ad169f09","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.0","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-/rjXgM4uOoEGOFIXb9LqDasX6SgxDatU93OFwd8/u/+Ypxe5V8jKvTlEwvDiQ4b7qZr97MolX7wVHKax6pUQoQ==","shasum":"1436aa165d4ce8bf90abb42f8d3f77b498a16d58","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.0.tgz","fileCount":16,"unpackedSize":63659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBVa3CRA9TVsSAnZWagAAoBAP/Aum21RlriwLtgiUwH8e\nA0qdl5XKvqwG0SrJ3Ry7OyofQCQvO6xWGOTK4hTlVBZ5Ryz045+ltWvFw8uf\nhtw4Sg/5542+9OMogQwuM9S1aBZEmRf6kFnK8pLLHPHsW5jc9xy70Ua1mlkM\nQgjmH8O2XGQWfXNRJyOeCvKXCW4kQmRTq/5WRcZHUbKvci3pUvkwXUiQ28zx\n+34oc5YCG7EdoJkrs2PKifgrF/8tS+tWBbdPUaFNbJRKia9mIiXq1sgP7/ou\nYiZ4DSW48dlC7cRQzjF33/5rzOYuyP02DV25ODtnrApD1yqxkLIrBU4NLiaE\n7lcjp90CpPkGiSYxTuZX5CpNHca83kCRsdlgNs1BULf6l0B9/1eUqLReX1fr\np6f2l5xYgjlZ+pAQj1elKKmGjQ8rvY738bM8LtJMETCB46F+1BH1tDVjI5Iy\neTevKtxLTEEE/VqKCb9Sac85WqD2BoubX4XAW+CX3RqxZOHIEOYyEQywdvP3\nkpMuGNeo5ofNimsK2vO8YltdcVpCvtVKsf258HRhW5uX8SIPmjc455UcKoAA\neSXqojnjjzkxURJlqsbRMyXfOtjLVYha1oxxXEFHre45lFZiSQoaxqDHsBVa\nRseb8lOomeFrpPqct/T5mEMv4QevtRzGCFuazwzBf9GGsvjdx3Jy9Nz+Qcy2\nnjXr\r\n=j8SS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2rjAMWcQD3UPYzGqrp+uaqbr2NMCPslZIZZ2TE26dOgIgP9hamkN/4mQMoeeIvEKTFUCzxueIxVrUNXnTQcGHd3o="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.0_1644517047209_0.9110405280838838"},"_hasShrinkwrap":false},"28.0.0-alpha.1":{"name":"pretty-format","version":"28.0.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.1","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.1","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"d30164dde1847166fa0faec98d20abffd85e6ffd","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.1","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-QhGbrWAhSSEBHqdUj2pAy9MuR4QLBhLfCUENh+bhOWO0tcbqgNSvnbfLUkMroAcFUZIEzBwiOxxngKS2rHvWgA==","shasum":"3a87ad1585b52dd3c314b35badf99e1bdf823bb9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.1.tgz","fileCount":16,"unpackedSize":63251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDBqeCRA9TVsSAnZWagAACpAP/3L3LmqL8D3Hn8XUX9B0\nXxjNipMn4fjUbM5YjkzGqG32v93vqKnz3rpT0nDObi02l5K4dCwlFi4E0+QP\nnCngt/sLBFeMqLFCt37dv8LcqVgZQGny81JERvjMYWmaBHAwYPpFciQJsm6Y\np9wY/aN0Auu/eJEjepOmnwKjL/Rm00YQOaij2vyMD7UweOgxof+RpBWSqLlM\nBhRVA3ccB8+684JxZEXtTzruXc0qveopxJ4xjNjQGERrxP2/JZsGf/hppb9g\nks+to5J0zRXh9a8rdy7ODHOPbjOqzOLcgW/29+c5wNODmfFw+Z0XPo6VoEcF\nORT1AaWOu9jFi+S3Vq5QJxCNunB2hmDM5ybw7VT3JrLLDY8Y7G4skhrckThQ\nsX6TNh8I5wxR8Atw+CT298FCFspqVzv1yn2KQFNS3f0Ak7dpMIFrJCHP7wFz\nnCRCcHxmWSEXjREN6JyjSRYHTH5x/K2KYAtjjKQGYz9+kvypSTIJwpSX3YL0\nSiQgqJ48cItUlozttm3FnEVeUQpEzlZOPdGFSJsdzF8fJrVQGPP+izi8Tajq\nTKZqedc8IuoZzhyRrUcPe3WKipWAsESytwvXahrbVAL9I/VAGKOARz2H3kj0\nw7gn+ki9eX8hO7J9rzsMXhjY/odcmmLpeuQs4LgYi2qVzLplzZj2yxSvc3P3\nl8Ec\r\n=o9Xz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBC8p1pxhPymqyFymaYozjt8sYFeIewGFM9RkRS1481/AiEAt6Drsn5L14VDmY1ojktjbAs0suGG25xdzBDZmp90lS0="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.1_1644960414110_0.8406425425879609"},"_hasShrinkwrap":false},"28.0.0-alpha.2":{"name":"pretty-format","version":"28.0.0-alpha.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.2","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.2","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"694d6bfea56f9cb49d0c7309cdbfff032da198c2","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.2","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-X7v9c9KuJJhH7Ue7a/grXlLzrpUzjdHCgf8lbbg/r+sX6syzUPLTKdiyxQGFhAYttZPRwmzRC/kVY50f97aDmg==","shasum":"e89a8b3d77b6e5bc1cb9a57fcb68089fbc96cee7","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.2.tgz","fileCount":16,"unpackedSize":65283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDT5wCRA9TVsSAnZWagAArgEP/2MaKhkTx6zcbvcevbWB\nEmK9UF1VnH2PYbWl2+903dvw7TaOGCkrY+PV0I1JPTnoDKkfxZJkJphv5i7h\npEK0edGcoDjbJRd86aW4BixkeaMLiESdDMTB2Bw95SR0JZtE4E2cbbVjtQAY\ny56O1x/8Ha4s/GrMtThYi45Pj6DaamQRTgfeEg8Bm8kcwM2zniWvewku2n+O\neIKRz7Mp5z67prlAyeRQkTB5h4o7s/1OIYjV6AGXt8ODCgeF+7zJeBuuUW8N\nE6hdzy563DMcpcZ8Y5D+7T11qwYq30QVc3fKckkVE1ZY/H6ER8v3F8qyeFc5\n6yy6nU1wZKwks3ACmd/chnS/rT3s6y6RIuOjEamsy09wtgsCEigTO6cjElt1\nss8yUoL7UOpud5S6lND7ExxIYrFIbvN8B6M722wOu8YA+tSzOMHHaHhCQiHw\nMeseWpPvMO6Mv1OgL2VNlRBMnlHZ1uETjgg0V/kDlah5J79hu+T7q9Fd6sCY\nl5nyCzJBUZSHDbAdsYvkkIqdjrzElsS2WbTsE9XwJP1ihqMt/h7QFI8OjND+\nC4dLGyBD1g+81t/PDwFBV/bCcAjOhd/4uSwXUz1ddFM5GLJ64rQm4qyCkjZp\nLNa3uVrURJ8fD1BkNlfGu58tfWcSlC9pEZvRV27b1XByEhOn853U7DWt0lHM\nNarA\r\n=6NeP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICwqTj1ggB0djmgR8aY32yZn8Gnf+4xmvUiAe9Og2+TrAiA1bGo2PV55lJ52miG3BaTLJDwbe2R6fBNdhjbK4/Pq2Q=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.2_1645035120150_0.4279390848744169"},"_hasShrinkwrap":false},"28.0.0-alpha.3":{"name":"pretty-format","version":"28.0.0-alpha.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.3","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"fc30b27bd94bb7ebeaadc72626ebbdba535150d2","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `strong` | spacing to separate items in a list |\n| `spacingOuter` | `strong` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.3","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-NEv1CczT6FETvnXhKZhSmBhqNTFSqzR0wThFQYrsPCo5Nh23MAV6tJcg8e4v3EufEYdNmg054tDrqjBSPtrb5A==","shasum":"3640879f93293f2c36f804ed9a0cf4558b9de72a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.3.tgz","fileCount":16,"unpackedSize":65283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDmzdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTmA//R7QZ28/lqJL25V2VlqSOz2uo3Gj0xJrmSe2Q1nLA1pKH6iZN\r\neUjkr3/hMK2j7K8zi99tm1XIrBs+CHIjYnXBncMyFgxB0K6CC9rmZFS4uJSF\r\nkACvqcXOrb7njSS+hOS6NL56S7vZ50OnNZOzyC+lhVqEWPwO/m7cxu/L/v43\r\nXajiRyDWICiAMub6QbdK/EMEnWoZsx2E+1ejL6fjLZs6qFCSghcignZmIm6U\r\ngRI7SPmgyqwA7YRgUjMsXiY5mEITHCVkLn+rNpuX5XTVlDVA962Jm8WN4MtS\r\nElLRno4o2pf1an5FtQSMt4AmpDsDG8ZDC+6z/+s9LcFrYutjqIF9C8+TCTCb\r\nWB9s1D1lLdYxxFH8R9F6EEOoAsryn5fvvT6Mwth4NjhTq9Ox/qRQRBhcToD7\r\nD8goDFLc2o4qwj6/93Zw+CVZNZNipMDxI8wKu8RcF56EopiexKat+9CnPJ8w\r\nT771gK4vYWhLEFHxsWBO6ALDYURfV17YU/Xrwlj16nhaxKtTMKL+ZaWL/QCj\r\nhjgcb2LzE0epl2kU0mc17yErBkK0Pc/8vRHzGYK6JmH33TPoRCkXmrbBRWcY\r\nv6pa00FuOp33YpKT1N/t8IzeS/yVnHqG1VQatkjSausefPfHEXRMQCNeQzOb\r\n8uS9/DUaE+33WbOlWx8/rSVsI60R0c5qJfE=\r\n=zA88\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdeLv9CpBOJb4wiU9J+3X/ShP+nhhprdxvgyigHcoaUQIgOOxMXLUZnl2+2HbHTDu9/U5Ibji0wSEYtIhVL5/m+hk="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.3_1645112541087_0.8638536537967649"},"_hasShrinkwrap":false},"28.0.0-alpha.4":{"name":"pretty-format","version":"28.0.0-alpha.4","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.4","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"c13dab19491ba6b57c2d703e7d7c4b20189e1e17","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.4","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-Fef3SvIqeOUBDiZST9Krl8phvyjD4OJsKafX8P7f+KoC8ofwTX5fIx/1dArAaSwR2b/P3tVBzmNowtS7vqdhXg==","shasum":"18037743f425769734e6d6cb81742d1be50cf8cb","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.4.tgz","fileCount":26,"unpackedSize":70679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFNOCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0ZA//bA7lCgBHecY/bBsnBppVy7i72+DyaW/xHqvcYNZeEfoxH2iG\r\nV/RxoUCUJUhswKcn0irUmOx8ktUZPDYfX4Zjg4ZGFfNUVGSzwDLvU8OOnUYP\r\nBUO8tWGSGu/bIa/QcIE4A+VRnLh1ecU/XqBEygkgH6WHUjj/bJQ+XDsE5eHx\r\nnkY1e7DBvLPbXUzOq7uUP/k6J9CfDZGyoSiAfhCIq8fkB8LcIMgbFXDeG/tU\r\ny55B/y+AEeDZyG+ckSKaVyBO0DX802CTNAB3mDvgki61UNJn1paLeB12EJ54\r\n23Vzo0YtVakMoZlodm80lFkTDfMFisJus0g+fY1tS6iuD35UTYCLAP1d8RWZ\r\nHxxlpD5QTycg8/xhFNRdXdy6d2jFAbBeHoIxJ2L0slwrgMC2iS9lmFHPegEI\r\n77bMKMMxE9bib0n3+HEH2TDE+TL6Eb9qHI0se5n+iuJCik9SgvjbkBvxbBlr\r\nKZUuDW0XKTnKJDS3/hBrYaHT6/w4UD6sIMvSGW7U2oJ+v0gfPPOpCyj4PhFA\r\nKXJqumuUaXUAUr9K3LoWAG/FZqjPyoO8pkSQUH6ouRIv4pIU+v2nhjJ40+aI\r\nJtV0Y9tS2eAgp/gp/9hUUnvVE9p9w75gzOvVmaeSio7Uk5SkRCmokA3S2Nda\r\nFqPgCatFsh29FrXJWP16+ZURgr9H+ll7hjo=\r\n=Ua3d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFojIviEnTG66LyoKURrF46nlQfwoqlWTzPUEizH+h1pAiEA2qpEon7ND6TTDR29hXvnTnXZUhUe8xBf3V/uQ1v16Ks="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.4_1645532034396_0.6724369004713402"},"_hasShrinkwrap":false},"28.0.0-alpha.5":{"name":"pretty-format","version":"28.0.0-alpha.5","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.5","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"46fb19b2628bd87676c10730ba19592c30b05478","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? '[' + name + ']'\n : (config.min ? '' : name + ' ') +\n '[' +\n serializeItems(array, config, indentation, depth, refs, printer) +\n ']';\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.5","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-188xlJdjYl6YAeMLBoBaI0WfcN/+dqpsOPM4gVewrm7JJ9gqu2lCbQ8e9GVIbu6vsJCKXJujBfqA2Tpb0GWk0Q==","shasum":"4de87bceb13bcddda77d1ba8b37bd270f3c6f389","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.5.tgz","fileCount":16,"unpackedSize":64632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiF/EuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrhbg//YJzBBlkMi5to5WjeBp+SOH7n5+H2vrsPupRqf6ZyRSe0QD2r\r\nvrRB4y3fM0172mElT5btr8ERpV7gSrpDz/zGEmA1zO1SRjCQeIKxASHBi2hQ\r\n+d7M6bsFTscwmTKRFV9zsk3aGjsH0mUTk0464u4NGimTrgUEua7P6f3AoObj\r\nI5mw1dd+1mnjvTXxDmmnoe3c15qP9jb7bGmJj/QeEDpPJo//xQQdraUhEZz/\r\nhXictlcZN/ocDW8oS28UB7ZL/KIvOiQ+wFVnk+mgK27RKKAJ2k7sm7k6o6Qn\r\nzNYDBZUednO7nCKQgPYTZGcG8jqk+aKqbb1V8KQEsedwLH/8UqB2S7D4UGmM\r\n7sSQ7GrsjhGjlgqFkxTks7KLOf/pTh+671TvZKhRie0E7a1IOO8r4lwyDWxi\r\nYVlxWs1yueMU9ngn1znwXeTo0+OO+RMEC8OadX3oDIx5Iw6lZ9AeRhvYgy5P\r\nkFYh2YUcYfPh3xe/bI5llB6Eyk07IAPe7+MJR7y/R0xDOh0df+zOG5pOuocJ\r\n2qb5UPZ2NNq0OpD40NFVLIYSXkOAWmi8WnLRm6Apd8LqdhMMh36A80gNnpba\r\nVXjeZXY+iUClxbGKsv0hgSZ7ZrTtQSizuX+jVVBCY/WN68famSsfZgHRVure\r\nmoveg2sV5f6/LbGNexW8OGUSQ4fNioRpKCE=\r\n=Jl9d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+xqTboCojbx0+ArJz1lvGuZfAToFQ7B2z8oTnUrqiSQIhAICIEmVfuh5w6G4T5b6s5g79x8cH/I3CWTDlPyr/yhWA"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.5_1645736237951_0.49014202807759455"},"_hasShrinkwrap":false},"28.0.0-alpha.6":{"name":"pretty-format","version":"28.0.0-alpha.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.6","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"6284ada4adb7008f5f8673b1a7b1c789d2e508fb","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.6","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-ZpWa20EGIu2DWS+jAmELiGAVrfECoNooq/DdeZdvPY8T+UNsqwu/UY4t/SLZ/1wM3p16Hunb1jY/BrTsgGndfA==","shasum":"200d65bb7e118ce3fbee6b8955065837ca0b51c9","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.6.tgz","fileCount":16,"unpackedSize":63893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHdoXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGJBAAhTFqKQ7deTUMcGBlaCIgm+h7+vLXH5MB1NOTMk7NGlEkP0sC\r\ne0lUSLsASSimbDEfP3Imr+vXWZoY4XRAZbJ7POw2sTNNj89/6LQk/RCb4EW+\r\nT92fJ+Gxz9wuzyW7yQRALcMSHU6Xk1WCOHadbuaCW6r+pvh7Cj1MUp/UYl2B\r\n4Vqw3xXDk2kEtS+fZsVnMBeIRVlZcMOrD2W1bjTp9pcGb4cHDH6ZVdyLwvrC\r\nC9jHb9Nhh4gqi9dYII8bv3vCZrRtG4ShzP7cCwiZ4N3TCEIEQiNO5dz1E1X2\r\nCMOHczSJwpa3NVgPitPy11vJbn4ok83wSd/i5yxjejMXKg+2zlyBrCBgKU8E\r\nNs8wedUqz6HfNxJJgqTHKbzF2vammwqksPyYLsgnSH/QA0CETeEIwm+4ueyt\r\nP+FAR1hMfB99if2e5gQHefu6BFYkNpDxRBg2eP0nZgwSVFAqaryITd6PH5l3\r\n60M2Lv3vvTd4icCCRxQjyBznnA7SLI4B03zIYBSSQqr30fz99Xt26n+dVsXu\r\n8XOtDscnen0Tyb4E6J8iHxtJDorpsscBizz+k6SI0rwVn14HVaosi9vXJJvR\r\nHxnBJR/2YOS5VH5yydraozWsNa4ok/YYo5RGeLt5dwwiDUgwidCael1kKbIl\r\nrPciAUvF5CYUnEUQMmfQm7LR5nWokfGV21A=\r\n=Kcz/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7UUzF1qzeVY8Kbrql0MShYoXd78iWrUd4mDtMmUN3HAiAvf1/6d1B5/f/KobA89NAJmpSAjTJR9P3vnNr7sNVbbg=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.6_1646123543138_0.36579205309415164"},"_hasShrinkwrap":false},"28.0.0-alpha.7":{"name":"pretty-format","version":"28.0.0-alpha.7","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.7","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"06f58f8ca70abc9c09d554967935b58ce85c48d6","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.7","_nodeVersion":"16.14.0","_npmVersion":"lerna/4.0.0/node@v16.14.0+x64 (darwin)","dist":{"integrity":"sha512-al2ExJ2p1yP7UVgwpVd/RJf0sFvBywxkPftrUIwkbgCQTLc7hWJ/BGseoGBpAIskQoagG2ZrZfVgSc05zhJSvg==","shasum":"0a570dd71fc8286669e733e3aaf834482f6889d4","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.7.tgz","fileCount":16,"unpackedSize":63893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJIa/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHWw//dkZt3WHgfCh3M0YVf60oCK4EcR5xRbg8wK7CGzzCRigTba7h\r\n0bYnUX7xvl+2S27H6mQMHWi1585YW34XlM5khOm0yk8BQlqDR5xlNnvFNqzP\r\nITipzzMW1auvloS7O32y9JmDqQB7BQoGIhp/kEcflVDq/P3EsvIBBfb6RKjj\r\ng+Rl6FYSaF91o6sg+ofKJAp7EgOyo+8tqLX9c6NNt76Wx/fxTbpYETc7lAtT\r\nkEC0+B24lhWQ53f6ftby69ijcqJVNcVKbNzH1QgxocU8xLPZYlbIBYAz7gIj\r\nbCGgb1xuXpd3dU8IzerQsPlQZQ8UZdN6V0OY1quoHy+lUvV5fdkaV5getTNA\r\nAghsBf0SHxg3GQKC85s0RQ02kKT/eGtwzu12KcUA/pm8l102S8DK2JkLivcQ\r\n10rTc8S6ue3JdyYBJX53lZ1/onGmJknR7B5kKLVrbj+p4Q/dlxEty5WPZujK\r\nkLDCMLEK4yeKbaWCsS0LwZKPP9db76gNk1RMRUxSJpeg9C6AVLmR4JyRbo3o\r\nN9FgR1XqcWAZuOPUFpFetaGsU9FbmFEUi70bCVomaK36QB0KYx4J8w8laJ+/\r\nSHOMYB7hnTC92Fo8c9zD98fXlvVRFG8Wt1e1I+au54zgYiniA90lqGggSd2N\r\nxrULAiovDWhzUyr2YZKjpYThCVqcAZxhcec=\r\n=rPPY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF2/Vbsq4Sl7PbL+ceOR3fZLGMjPSMEsOInGNtpgLDEzAiEA3+wIa8HeG2mPr7rM5VX8ZQellxjrGwSDD0JX1+o8AbQ="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.7_1646560959672_0.2511284546495116"},"_hasShrinkwrap":false},"28.0.0-alpha.8":{"name":"pretty-format","version":"28.0.0-alpha.8","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^17.0.1"},"devDependencies":{"@types/react":"*","@types/react-is":"^17.0.0","@types/react-test-renderer":"*","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.8","react":"*","react-dom":"*","react-test-renderer":"*"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"d915e7df92b220dbe6e124585ba6459838a6c41c","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.8","_nodeVersion":"16.14.2","_npmVersion":"lerna/4.0.0/node@v16.14.2+x64 (darwin)","dist":{"integrity":"sha512-6F2AKNADeuUVO8jhwHEKWl54lCQTJg8kr9uHjiuxGCaOq4AxaIhdOlS/rDkFha8S7mmL0u9jz3jU5dlaWWFjnQ==","shasum":"311117b922c9d5d6d1421b6f0340c0f2d3973410","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.8.tgz","fileCount":16,"unpackedSize":63893,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcotvSW6DgFyPPgU0Vgfcr4EItCptxYM45bhwQNWkclQIhAPKU7GyKVuoZ7C9+PWWF3/nvxtJO5q6xT962eM3Xilgh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTFlbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr29Q/+KoWUvrQXPRSHL7sKYY7LUYlOSoFDmtPpKqQOMyI3+0/WZmZ/\r\nTGuNJWG2sQiUADtNVlMAG3WlJ57RXJSL+8ypSEoXwBShF08vnRz1EwpnJFfl\r\ntJ3APLwNrwzU1tjYCRWu4SZw2R8Voa1hkx8z9oOCE39kGXkQiDTqmppTdFl1\r\norjAwxi2QwRu0Ft0K5KnjP4aAJ+nFZT2fnFO2PLYmYEocF3K+geXwvU92eER\r\nLrAPpHyFGbjGoH2L4nc7CKvv2cuwWyRl9yuzu4y19ZRY7HVjJEKzkvqVeWFo\r\ncYFWLRNhEBYGD62K9BBd6WxdRfczvMy09OP9fd+0egDElMBFjH+hChjKletP\r\n6kC40/oddmkeD6IhbLenXUgmp1Ar16h5r2r3r+gq5jDdyNhxNm5arcPmrAIC\r\nJHgLE9rxrOSilQx9rIDBQCFIfjUIgJnFvsF1mzkACM3o8p+0p4LH23ikyA1v\r\nDV6oZQ0oMw2FG4oDJO4tkSOyQvzlfjkMEURvVndEXnPpl7RmFPBsTdAYi+TX\r\ntyShD8L5FmNUtA8KaMjfiRLRt2Tg5DNei7wnpGoyQrADy7QPWwILRlm/aed9\r\nRcTz8rJf/4cr2vJrGKhiufrj/Yx0FSQAizo6jIf7AV2i6xNjYAw3UMVkZtlX\r\nveOuqI3Iova9YYGsX/gCZrs4NgH8C5I1QVU=\r\n=mB/h\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.8_1649170779027_0.21054515954145026"},"_hasShrinkwrap":false},"28.0.0-alpha.9":{"name":"pretty-format","version":"28.0.0-alpha.9","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0-alpha.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.0.0-alpha.9","immutable":"^4.0.0","jest-util":"^28.0.0-alpha.9","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"7c63f5981eb20d4b89a4c04f3675e0050d8d7887","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0-alpha.9","_nodeVersion":"16.14.2","_npmVersion":"lerna/4.0.0/node@v16.14.2+x64 (darwin)","dist":{"integrity":"sha512-L9d6AzjnyvyoHr0F6jCB+70Nlk170kbfiXCrYism/Xapn4SGJDc8ldXfjFEkm+412HIHj8spWkHOOq2ovq0WQg==","shasum":"f91a5153ba51aa071fcd08fc63336df97026aa07","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0-alpha.9.tgz","fileCount":16,"unpackedSize":64133,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2NUlg1BtnLJ+NVzA19XOUg1yf3qvSKmv4xxjWh4AFvAIgLfVZj9MfuO5PLBH/nA87wS2I+RyyPw8akNMuKqNDi1M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXpYCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFvw//TXmuVp1QyLBEjciTNdUBqbudBoxi6upVBA7Kxyhqm9vGldDT\r\n+yVtGB2Chw98p6/tZf4B9BhaJntVXVE5GbDUJE+2Mc3MA0llhiSG/isGTiUU\r\nYZ5MVWqN7yL+aNeo0KGm3Ee21In2BkJM8rzFEKszke9kGN9e9/fh/AoClEc2\r\n0AZxSn0252ot0EMhD9xrNVU11GC/WlCZoO+HSunX2SdfRQVutbqZweu4w+j+\r\nptLM2zdNQzM02M+iIg4P1Er8vkOJDywN1W/59Ael1/lqx0qIz+Rb4019PEP9\r\nX4Zi+nkpebRRaqXwq3OGjV6si+dnTGR7y6Na+QMIeHJe06dtAZiPNwTLBa7E\r\nfk51PlxiimXy9Zf0pCTET9p2Emwemo8XchxWFIHGZJPTy/1CLhNu+2SMt+w+\r\n8KyKYh/0VOePNYvLRx8iBurYhXktEpzRsz6xcgWMlOx7HroXZUbDbmh51P/d\r\npPq3SC+XxemmY5VCqERG0CFCwC1Nso4XR+9DggEj0blOqyQO7pqvfG5VCwWB\r\nVpXBar94MvS4/z9APwnGMfstS2p49BQgx8tRPqupqLiKNAlTXeb6JJyMDGh+\r\natL6nH/DnrRVHZHVhB1OfuKpmdV+4sIkyZXyeccTFwrVGxAPqZ85I12KSET9\r\nuWwVXKqJ0OP31WI178i8aL2GqElMBlhVg84=\r\n=edZp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0-alpha.9_1650365954013_0.5782213305662727"},"_hasShrinkwrap":false},"28.0.0":{"name":"pretty-format","version":"28.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.0.0","immutable":"^4.0.0","jest-util":"^28.0.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"8f9b812faf8e4d241d560a8574f0c6ed20a89365","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.0","_nodeVersion":"16.14.2","_npmVersion":"lerna/4.0.0/node@v16.14.2+x64 (darwin)","dist":{"integrity":"sha512-CoBfnZavDij+aBzQCVWIIYaZEe1ifIGLI2lG+c3/spHWhpeSt4kpjGd5W50GqtdtbL/Ojx4ZonGIqZVdUNoBGQ==","shasum":"d0bd7ece4a113692865ec493df0a26490c791d21","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.0.tgz","fileCount":16,"unpackedSize":64101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0qVEYwHEthpQq7DnURfRFaX7I/+JTW3Hq76b7T05BcwIgO+uizR0ejvomDHmeyYrr3cJSv69S1PWDkX+jN+4APYU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZo8mACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrr5Q//d6fb81Y0UHAzp1dqU6cDRWrwr0qtzwuJM7Rchmr0GgbrpoUf\r\neJ+CGbLCJTFcbZQCUUe3WyrKTLpB25pFVj+py/mTPhnS3jQCMYPAYmOfazaV\r\nEuoZOMzBHCMOYNjKdwRbRuAtmnWRVnieR5MLYkQNI30cy0srfxGu49OIT3wP\r\nrKNXQeKwzCFuTbu3morKZ4XRkQiP6HpZrcFjmMTiem1T+XNLChgcUpMrFxqk\r\nJTjppZ2M9jxAe4u3I49zim+0zZ9Dd4Llvy8UZSUYb7B2Lo3LUkcoofQvVIqM\r\niPUO6qQPGIvWlGXFUZ6h78GU1sQI3OWyKxpFB5cBaIMOQx4F8WtjUa/kTlqL\r\nZjvuJcVqxZN9BX3Y7cOR7pvLbgaU4iaBJo0eBlPsjFX9bW+6SVL18pCL7gUC\r\n+AELWv8kjsNKCR9KTQcjztOjOozUdZ+sp3i89rWk6mcbzxunFHF6uhMzXeCA\r\npoTWiDi8qZj7pKN9nn5yOrzc1L5nusMCuq5eMsmJSkYfPuIoQgT2q8qZ5xiB\r\nhAmE8/9OLufKvlz52idD56q28qAHTD2IH1CTzDZtxz5q1jbXQrfRaESJVyLG\r\n7ItnrN0fOgkR4RQOxFT5c31hwOinN2yazXU0GCpmnq1XYaYfNHRIixU94fzL\r\nK2tpEz1ASV9kdtxfYIQNs3fr+s6N7oc9EOk=\r\n=Pzxf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.0_1650888486611_0.7246886855603005"},"_hasShrinkwrap":false},"28.0.1":{"name":"pretty-format","version":"28.0.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.0","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.0.1","immutable":"^4.0.0","jest-util":"^28.0.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.13.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"0a08639e4299f07becf1020a761adfec83536018","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.1","_nodeVersion":"16.14.2","_npmVersion":"lerna/4.0.0/node@v16.14.2+x64 (darwin)","dist":{"integrity":"sha512-utVSIy0ImophYyJALfiWULOeMnfoxLZEzii/92VcSzN7OX5U1r7erAMqfDJyuv31ugw4Rp5tOYUMndsZV1w8DQ==","shasum":"ae6753bd2bf26fdd552f41194568ccbef23d22af","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.1.tgz","fileCount":16,"unpackedSize":64101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWMB2LYED9Y26Hbf/JN26dKoJUyy8BAVNJsOwWY6fwUAIhAKOJ6KTwc/Hh52ws8QLhz7/jYrIzQuA/5cBc6OKqYQ6h"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZ8M4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfPA//Rwodfiz/OegmMxhEC6Qiacd8MXBrLOqUMr0B2g9JZL4TVNJa\r\nKn+Gom5gWk8N1x6P4l7eutMSr6pCrxeuav5hg5VU4k0xein2ppTcLsS6jIh8\r\nPvo/+tFKyX/g6WC6El4t1HjlitPeL0h2+wBG+NVXQVcPvPrgPDSZvT1TDQVk\r\ndGRTv4RMOzubmjZnc4Kld1XgPkBy83QYbeTpgNa3kzZfPNQcC952nPOP+iH4\r\npQpFHFnEgd4ygzrhLAxbAivGZVojaFLyF7AgmURcF6rGSanC7Sv5Cza7KaLU\r\nepIqa1tHtIEqI3hBF1QJHDbVACAZG+T65kesFxdFVx0jJDUX17d2F0dtIU9I\r\naDDk3DYsH+jv9LRaF2PL+QCKx++vsBFLxJOMqZB4D8yzFpnt6+BvGvlnHL01\r\n0QgLr3Z/WSl50r3CaBo8VHeMuP9Li9xMjdpgefVyH0k42QKY/myGswZJ6uTF\r\ncORApEtpQzpzjc6iEa+Z6vMReu2ZDlGHgePsBPiO+529UVWh9MbE2vGpdhmM\r\nf27+GICHWVEP+KIVXpTt5NzIuR1IIutG8LwD3Idfm0SCWRDPvE2II8tNJxl3\r\ntbNkLQneubXJA4xcdlKAyNKze5BEM1KvztB5J2e27FXtVsFrcCfl8m0oNx6z\r\nSAxPb9QPwCa3FROSFKdZfiqTTHKrQS7svw8=\r\n=a1G4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.1_1650967352300_0.6302006512233063"},"_hasShrinkwrap":false},"28.0.2":{"name":"pretty-format","version":"28.0.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.2","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.0.2","immutable":"^4.0.0","jest-util":"^28.0.2","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"279ee6658d763f024d51f340fab6a37c17d94502","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.0.2","_nodeVersion":"16.15.0","_npmVersion":"lerna/4.0.0/node@v16.15.0+x64 (darwin)","dist":{"integrity":"sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==","shasum":"6a24d71cbb61a5e5794ba7513fe22101675481bc","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.0.2.tgz","fileCount":16,"unpackedSize":64101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGMf5Vmti+pXap1k1v8HQQIlYy3cWKsMcjSPfsERY2EQIgdltGk+QiRQthWotzvSVyj0wz5Trc2YzrvEwkUj+DzTk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaPRBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8jxAAnIYpdfUBZiwxWm/6kY88OSBdOCa+94+okjEw5gpTmka7TmAg\r\nteOnEiKgGQn0mFaZeqsFpq7sciTFQZOMoNQxGwwd1WCcXdbjQx5FEGMlxjjR\r\nmitGZHmgEGo71sQ3a5CY4poBIKo3JnQbPBqsoVZPjd57iMyu8miJPsdxEd6a\r\n3i96z9EU6uvIpLVFuH0lEz6yseobgTMReb2QGqAijEEijqH4hg4nF3eDP0+L\r\nkkY+4iPObr88n8d4e7CXdjSXJst9Anf2gaUFWd2IJm14EV0wxiY2Qu/eP43m\r\nhL0EyoBtO71gADqjVQhyLrITdUSWBWZJ73EyCgXQIG46SH/zZgd79Qh6q3uj\r\noaDbbVBH3PLxRtjjeT+dot5gep9OlDjxJeGYB8QX+epFk+FJC/H0ZjPTN9YO\r\nKzSaPqxMX1u0vUh6k5T+GHaDqu2R5pZmwxCOmfS/1ryoc0n9onVxdaZV4cAT\r\n/UWtoSGy91nHRlt66TXTBcIkoK8KylSwsRLi8bwtegF0hRBqprHi0HeOZbF9\r\nWs4+ktfmCp+/hS605vyacMPBuLxdcBhyypvJCrX2dBzDbHSbUH9MYqyeDqWb\r\n+XCjk/0sP5Tb//kegJdNt5EULMoS24PoYY9LPFSzjGpx3uO8j2oRXlKIAxu0\r\naf6ImSLAt/pL+n9f0t9EujEZhCek1gx0+wk=\r\n=K+GM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.0.2_1651045441612_0.8638898920815299"},"_hasShrinkwrap":false},"28.1.0":{"name":"pretty-format","version":"28.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.2","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.1.0","immutable":"^4.0.0","jest-util":"^28.1.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"f5db241312f46528389e55c38221e6b6968622cf","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.1.0","_nodeVersion":"16.15.0","_npmVersion":"lerna/4.0.0/node@v16.15.0+x64 (darwin)","dist":{"integrity":"sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q==","shasum":"8f5836c6a0dfdb834730577ec18029052191af55","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.1.0.tgz","fileCount":16,"unpackedSize":64101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEga5NvNYUymiNpUcHiNitM9sxSTmChPHXKiPZPO1CPqAiAP6zhjUWyqKggAsiOoa6q4xIWXpoJVIUFyFhaZ+Kqwag=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidP0VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmod6g/+MdpJUmlFaibworTHGNC60ckA1+KELWX7745SmrmyD4RFzeOe\r\n64rR93gpGvUy1QEBFo7WNa/eiSBZ840zNhRbLU/easWPxZOltDL2mxdh9x0r\r\nw9c3cVAJqrRVL4SIxHFNbDruQjweG+vw6EN5XD0kBX2UvpNDIgooy/9xPpax\r\ntZfXm9KMCKxms4JKwKDt3R9SpyBhfC9HKm3Itig2A8gDah0fwsvfa8okfnCO\r\nZS6MaofcaZJQEkXvcDx1aa81OsalWbz/Bk/5aX/R8deu9jljP1UK66yL3z90\r\nsbnl+h6TDt3Pt8+28dgxp8dEBJ0Ea7idmxQsC12Zb6Ob7GXboIIWByIaIb+N\r\nR/SnoyUkxRhoby2EYgy8WeLrGjHd1UyWtay/rqmiVmj+N37umOgGDp/AZtNX\r\nriCLHSSRvTd/KIKGeOZNYbYiHV6eHH87X6Hv+VrkEHb+R412JBgwKAjvs7ve\r\nkJbN8CrWDj8Tu/YSDBiEjUcFko6MT4VeCrKPKYxBzPYCI1BWLnEW2rvb1XfB\r\n35WoPfMWhb05jtPObwAK3l4A1GibFBQWNwYehajilHfvHXFN7DDGN7+iCUFQ\r\nt2extRHSuwYAs74WnYnMq1qgrXsO6lxivDDEkftpDKBvjRFheIzJzx1uF4xG\r\nxdtTY8dCp0G/TO+LXrWYNTHG/LXh6JvK5lQ=\r\n=6m27\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.1.0_1651834133317_0.5061198094419364"},"_hasShrinkwrap":false},"28.1.1":{"name":"pretty-format","version":"28.1.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.0.2","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.1.1","immutable":"^4.0.0","jest-util":"^28.1.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"eb954f8874960920ac50a8f976bb333fbb06ada9","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.1.1","_nodeVersion":"16.15.1","_npmVersion":"lerna/4.0.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==","shasum":"f731530394e0f7fcd95aba6b43c50e02d86b95cb","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.1.1.tgz","fileCount":16,"unpackedSize":64101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHWTh0R5OWPBXZCmE82Cd9QylJIxCJbdt92GwXg1HJeAiEAypMTBYlwurLVjpVuVHhMjVtcuJCK088S9IXPoO7DijM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinuufACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVPA//SmmgcdE3n51GapMieIH3SRC3FSs5ZweygiRs6/Rk6FLYbWrs\r\nycrLDoxpMHfWqFYZW3dpPM0v+onkcD3DhSujODdMeqlT87Q1UBZB66S6imy2\r\nMsRVfuquNRPPpWY7alqg1zE427CfERZVM3ADPZKroPOm2gRt4E2wXrsYBKYy\r\n461xnBj5MIo9X+UeiAbn/DnGd5Gk6By/DhU5961MJSum3UgOGbDst8r7GFc+\r\nHxJ+6J1KD1TzWLP2AHJxcXkTLagDJsK+g24fjrl2EjQyfPJI/Bb3z6uAKLyh\r\n6FMrVX2bmQwdkZgR4S4/dcmdZHRyw+LqK1p6tyZF2es2CD4VOJ8vZO1Gh32Y\r\n9LgywCYg40FcAyptN/+1wZCxX7LoT3dbRK4RV3e000z2ZGHI5OoLlRSlaP1J\r\nB2YujXJ9NxLCD7zUAoyph/IGrVtFcLk9Z6r9kjx+zMOVvvPhIY8uUHTFmPo4\r\nxDeS8g1J7e0qSL++j6diRuA2OUhy9AQeUgNmwZ7Jb48No1BidtZ0EG5hcJYC\r\nEsEzfWoC6w1QCP1Fk+hecx3LWZWL5pEMGa23VtER+wnqmetQNyfJQK8nQ9zi\r\n6idhIuJkjyhRBaracH5zy1trj80TH+eHiLV4R3o754Js/cQk1XBLv2is0YQT\r\nXYkhQQinA9+NmN27wjjYr0K8aFQ27VAo2os=\r\n=53Sc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.1.1_1654582175397_0.28329124387424587"},"_hasShrinkwrap":false},"28.1.3":{"name":"pretty-format","version":"28.1.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^28.1.3","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^28.1.3","immutable":"^4.0.0","jest-util":"^28.1.3","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"},"publishConfig":{"access":"public"},"gitHead":"2cce069800dab3fc8ca7c469b32d2e2b2f7e2bb1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@28.1.3","_nodeVersion":"16.15.1","_npmVersion":"lerna/4.0.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==","shasum":"c9fba8cedf99ce50963a11b27d982a9ae90970d5","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-28.1.3.tgz","fileCount":16,"unpackedSize":64101,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAXAAwZr9RPm8nj74hL+hm++n4JhP4KTPbOCfL21ZKp3AiBwtwwkAtMTZSwMPwwoW/wXyYu5RqCT7E7QubtsZhQRYQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiztLLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQcg/9Fu6jM1gaiw5m6rlw+rKF8ItOOH9mAl9O7AXdyWSaGeCROUKA\r\ndzxLQJ/dhVdCFIIY0ffcvbNAasEdXsOR8kijmc5ODuhiK/CuJz7czZ7L6/Gd\r\n9iISKICBvGghbloraKE3ZuDBDL3yhSp5Yb9gV9VcsFpF3J5ZzeLN29P4bQb2\r\nhzEwpL/G0oCC8jcDmhczfVnciWgxnNrig2TsZJkbScW7c+Ohlno+rVqA/HFB\r\n3pbDau+rrvdw2pcNOqCTA0CbUwOjVFt4iEjxgxiCcndr0hEJUVm9+JDpCigQ\r\npRTuDfRwSL/eLRWcXTbCmaRaJKq2rbrSYsKVm+eS5mcPtfSh00dLTkoW4yUi\r\n5cMFMsqlBiKVe6kEWjd0pf4VBtFCI6W6ikRcqGw7XkV9JI1WCSN8sCfSc9vd\r\n+4pkMlTzaDq4upT7FOnGPBD/tME0BVTFn1T4ZBOKBjzrPOVJmtL282i9w3jJ\r\nxu3bVsOB+lBs4B9ruMjT8JLRifiA/Hr5qupu4zOZYY2RXY/lzcixIDY+ypor\r\nXK5EC249FZiuksdoKtFZjTJ/iOcyNMs+aD9u2TSxi6CqQ5H48n8UO/tuWMPx\r\nymAhhFr8jPlruaskvxamUQ1mxeaRXatWAqi4IGxxMBTmGzEPGENzqKfHZY8f\r\n48DtPsU87AG8GO7dBiBP1aay9ZPDySUKS0g=\r\n=rwNr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_28.1.3_1657721546848_0.8877523208230207"},"_hasShrinkwrap":false},"29.0.0-alpha.0":{"name":"pretty-format","version":"29.0.0-alpha.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json","./ConvertAnsi":"./build/plugins/ConvertAnsi.js"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0-alpha.0","ansi-regex":"^5.0.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.0-alpha.0","immutable":"^4.0.0","jest-util":"^29.0.0-alpha.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"6862afb00307b52f32eedee977a9b3041355f184","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.0-alpha.0","_nodeVersion":"16.15.1","_npmVersion":"lerna/4.0.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-jJty30gRCVJwXpdphPaKXkc9bl87jFxbt0ozgsV7Kp5cV+2YF+5ZfIPne+s0WI80JYXta2qzdQeeoTLrVRoAGg==","shasum":"934f5469a2641c2212034e7e26f43784a8ee3a20","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.0-alpha.0.tgz","fileCount":16,"unpackedSize":61546,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICCLR0N8CjGxhCgsEpYlIXAZg/IkuGntnXYUGB5PsisCAiEAiiX9LEAi6ByuCrXOwN+lQbRWsbs4akm4b4/I7KYY1gs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1IgKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2jg/9GSiCd118HgvbJ6RY68mDAW5C2yF7vFDtj418yZch1vhT8xOA\r\nU6Xz6nAtbhoZRJT/aO3WBgPiWMSUq1SuqdEi0SCqJGiYr3ffWN5dDfZEWVeL\r\nJyBv76HAr5DXOtYijREgML0b8w3cGumvF9zWHm3PaJ6876wbq9DsZtg8FHzP\r\ncP3eZVRz1wAkoD+AQ6SITR/GfOZtDkcCtnxP1eroYqD6lJq6RZuWud9y6pDu\r\nL5c5OpPCyhQ8l5iLpiRDYovJMYqW07VEgFocx4D56YtRAMULxBLLlJttTnVG\r\n2zGrH3KmmkC4+Cid7CSjYj4+3R3W4ubRtMAUKu80PHkR5f5sX3a17m6u11uj\r\nVcTnIfME0xhFRosf2JJ+3D1AjG7p7RAVMLqOzEluKT0D08SqUNmFU/ApF0I3\r\n96S5ctV3zO9TQWGPi2bw+RZ6bqLyvktPRDAJioMNxMVNuLNgg+1VQdQdwXgj\r\nrz7v72tufCxM4h4g7vwzdSzj7QGh9qCdDDzVYRo6cni1exckKbhTw8g5BlFV\r\nxtHv9ax4e9BPsFr0ze9fPfh65qQhCkwBsuavf+15ZikM51x591GxtcyA5tlz\r\nefsxcVNv+sj/rzCfPxPwVslmxASztA8wwKWQOCAVsPIUCRQYQmSGK754EvRu\r\nKW9a0MHeycEQhch3LN1/9M/dos7LpmUQV+E=\r\n=XnCo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.0-alpha.0_1658095626813_0.7693977634747002"},"_hasShrinkwrap":false},"29.0.0-alpha.1":{"name":"pretty-format","version":"29.0.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0-alpha.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.0-alpha.1","immutable":"^4.0.0","jest-util":"^29.0.0-alpha.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"10f1e7f52d9f876e6fb7f20c1903fdcddd8db8b1","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.0-alpha.1","_nodeVersion":"16.15.1","_npmVersion":"lerna/4.0.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-KDMbK6D5xr3jmk8DRQzGzKqFt+5D89zIAYlEUuReet9KznB342p/EC/G7+1u2eOBfIpaeiMNqGU5LSgfSAjRmw==","shasum":"0983500df3b2f43432d92609cdb756e2aa16ffbf","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.0-alpha.1.tgz","fileCount":15,"unpackedSize":58727,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDejR0uooPv/qQJaxsmYJndBGU0IUxF7YmG2dUrNOYV1AiAgZ+iS2fTqBACeRM6nzGqg3e66WKRH2HJWSALU5jTkuQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi64IAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqo2w/7B5c9nbJ2DXbsx5e/t6bZgdXTUpMkQSAYhiD1np6Eqeuyz6cl\r\nl9Y+7vXxpC7TOo71TAFr5FSbLDoX2P6XKQrlLozGxBzSoAojrZPv/6dTJlaG\r\nCIowKTixw4mJ33UwR1fyYWqaaU4VMcXQCFZd1tFUCTLDJkHSUfnufZcR8ES5\r\nRCrOrMSydBhygGAfKuXv8rf7dpgnzWt0QPgUn3dYctv+CBrJJAPj6fdG88zv\r\n8SJEVg35g9CvopggsT0M/Xked7bRHLjtUZQxmnOOGitFXdC5x/AZK838SU+E\r\nNyhGzIYukORi8eVt4UThsLvlj+QR6zdKf0K+BG1vJlC5czGWgiGNVgiIU75s\r\nKwGH1GnkyXNn9KQM1bDfddBWZK+TqHHISREZw43QpVWq5aScQg3ijj8/lhWU\r\nbIKqO9KIJll18lROHvgv4DjtrmzXoZG7g1r31sgjP0Gw5s/DJgX1mGc/E9Gb\r\nSrQCm78yP3TlaI98tBuXzDf1Aqdxg1P412dPXLqhSfHrhcaDYWUs9wlBmvN1\r\nz/bf9SidKup4oTrMGh3LEaApAeZzKuJm+pOh9vLUZAd2M9um4Bn8wB3SxJsr\r\nc/WI313yYyU6jTlsijRI3/U+Qtkpxlq90RahxFjNpXnQgv6R/sgztnCJnYtm\r\noyp2mgjRAYygsdbvje66kMDvp4QVCzpXFrU=\r\n=ujFi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.0-alpha.1_1659601408591_0.6820707347770099"},"_hasShrinkwrap":false},"29.0.0-alpha.3":{"name":"pretty-format","version":"29.0.0-alpha.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0-alpha.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.0-alpha.3","immutable":"^4.0.0","jest-util":"^29.0.0-alpha.3","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"09981873c55442e5e494d42012f518b7d3d41fbd","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.0-alpha.3","_nodeVersion":"16.15.1","_npmVersion":"lerna/1.10.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-Sbr8fLVdpbjQF37YqOiyn0XdpLKkPe3PiMfxAxKRXhiAQUV33IhvnyWrRwdt3VYVguu0UHcloDRaE3C70LJM5w==","shasum":"d09e7d8738f4503f5454d4ac7649cca8717ae7c3","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.0-alpha.3.tgz","fileCount":15,"unpackedSize":58727,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpDn7ftSNY21obI7FhViZMIMRQeQ1RweOgFkVj9zg1SgIgSXmrehrB93XRVcbfpx/nFoAcbsycaVVItglvOc/CcKc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi78EQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrcmQ/7BRgZUnGTKwsqQhJlGuxPYt1F/Mv7EbELq1rrcr9bnf0Yb/v7\r\n3zVkDhENDiVoOCJ1yj/1XluMG2g6ci/HORyGUK+JpbeUeFxLG5gSuSo+eGRS\r\nAAnHi8lDIGnbDstM6w3yMg9nPFbK1BOJ7455B6MjOKBC+mk5NlRWyXfotp+a\r\njsA8fsQdWcgyT0VzoBmZNbSNtKV9EDQEeXFUmj5S7Klak499J2w7iwz+xQKI\r\nSm0a3cRi2t7npEmJ00WEzc89cfF5qVGhuwu/DqQjDC5cecBUB0bvd9PKhgEg\r\nERqgrpZr9zk13Lb6m4QuuDgBNKIqFyw6Ks+0URVfVBYo28r2QcEi5heKso1G\r\nEJsHBn8/+tVD97Wdzm4srPOoDP8opGaM8RPRUAA/yKHnTE0DRNrN4RPRQ6fP\r\nuecfcL2Qg6Cum8E9c4wErcN8xuaHHjwcH94KCidLkPMVzxKSQUw6X4bb9xhb\r\n+7JhFKvXr3j2tY6dxZsKuLiaNsPrDv5jTU2luezbQ6G7ZSGaesMs+RPHWLj7\r\nQZI3PHDQ/RozDZF8/3QjfWUVlJ13KWdjp6C+7zj+Kxsr4ubhsqt9GFWOaP2/\r\nTDRaoVIun6uPrSZR4VQwcKzCRDkzEflDVq4tNORUFQxryLz5CyPmlQez6kVI\r\nLDbl4/4JgZnc3LxOEq9Tz6fuBTTC5F70hU8=\r\n=ggwb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.0-alpha.3_1659879696286_0.7638393311736449"},"_hasShrinkwrap":false},"29.0.0-alpha.4":{"name":"pretty-format","version":"29.0.0-alpha.4","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0-alpha.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.0-alpha.4","immutable":"^4.0.0","jest-util":"^29.0.0-alpha.4","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"98a833bd4bc0bdcfcee5d4f04c2833400c4e2933","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.0-alpha.4","_nodeVersion":"16.15.1","_npmVersion":"lerna/1.10.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-9EWTLT9Wsid/x4EX6En0YEbK4pbqpfPs60X44V7a61EePm2WXfJcoRmFfBQsgqSYRQMeiSV/T3dB0Jv0F1aZ1g==","shasum":"a185eeef2831a3986459b4b23fdc5ecacb844a87","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.0-alpha.4.tgz","fileCount":15,"unpackedSize":58727,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzDOrnq16rgaSM0ClaJ29HsEYkm25X5Edmyao0bTfdwAiEAyEd8wVNriZeHj8L4QEiKAc2F8F0Ow467D8sckTNdOUk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8QoeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBgA/+PwtgDgo3CBPVsJ5ppCJ84RmzjZJAjRVfQBsp2/ez2CAGjEzo\r\nMqWNL4VCJJAXEmm2qS+B4KE9xOZnsIuXM6fPqqYsaeUzr7VptNJA4iZVp2B0\r\ntv/YELCXPVuPBJpHT9to8r3w59stdF9J/ZFo2KavssXkHjeviPAeWZSqLHuI\r\n31QuKKV0pu9cnG6agGMtrSqOakK/C89bZW6cGGuFSouTmpm0ITictnHmZ00N\r\nXVSdlARK6yOvtGDlojcyulaCP3O2uY1+SVRLDZq2Zsr1ueYjAA9HUPzYfDLv\r\n5ljkjhhLpGVWZGd3Ohdyjd/QENdet9tJVpeMu3EzKtpVKQIKFmhHliIHOMUe\r\n5J5BOjQyQfQvQFGBdh9KcA/jH9T+ueLLS3RkDpiYb3+Dqeen23cz10d/nDkf\r\n5sZOmDQFEQ6rfdgKxc+G/hzZdJXeZfJK5uNGf5AUUdTdRkgbvh6AHFJybPJ7\r\nCMqk7mpINyvJlzqzyxTBXO9jijJDSkGA4+DH13cfld8hg9EXdFptZq33oe7J\r\nOmaIHgIBlXKes3+DgfiRiNmQ/7FwLCQy1gb4TBnQSl8SMCJta4DwjfSomYvb\r\ncvAuF6XhmihMajbgQucPCf+VSUzyZzHByZYywoOY0h6jeE96wGoV+0/yT5uR\r\nmi70Ak6Q4Usy4JDUPILdDtdqENVJa5n/IPc=\r\n=Gd95\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.0-alpha.4_1659963934800_0.646159528420519"},"_hasShrinkwrap":false},"29.0.0-alpha.6":{"name":"pretty-format","version":"29.0.0-alpha.6","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0-alpha.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.0-alpha.6","immutable":"^4.0.0","jest-util":"^29.0.0-alpha.6","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"4def94b073cad300e99de378ba900e6ba9b7032f","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :-------- | :--------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| `undefined`| compare function used when sorting object keys |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :-------- | :------------------------------------------------------ |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function`| compare function used when sorting object keys |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.0-alpha.6","_nodeVersion":"16.15.1","_npmVersion":"lerna/1.10.0/node@v16.15.1+x64 (darwin)","dist":{"integrity":"sha512-ifTZt5HTTYDLbav5bxgVgIRdqvAtaRrMLt03Ew5WaKNiV9ZsrF0lAoUyKrILho/kZ3WTZ7pr+k+dAbFhAteGbQ==","shasum":"fd7f4d58c14c60a41b0a29d77efe173d4ba3d75b","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.0-alpha.6.tgz","fileCount":25,"unpackedSize":66611,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNQ1kcSuiwjPwH+BekFIFO0BU7Fnua/ah/FHQfAJanKAiAYAUZyEPUJbF2sHGrNAYk8A40+UlB9XLJyuE1/C4ScWg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/5bcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoz3w//fJnjaK3ZlovAigMwtVyuVa80bu9UxlldNbGNESuw2ZuIon5p\r\nUTqVvh+zQ3hQNq9EKQX6Op6x/VHCHHxKrJDV7Nnj+goseH0pS+fg83GiiHSZ\r\nvbDskg4H3lgqKM0W+fMBUVagTH73pfyNTuA+aUziou+E8zOxe0mG+O2l9rRB\r\n/UQRh1oXvsSfqf7QpfiGYnzFN+NiKg7+Lv80pkJQLCxDJ3tVrAuea94hf/ED\r\niOIG9oJrRFuZvy59lgzIAn5XuxnW5HuJqN9Z3S2qVSU1FWFAjqtnTqJOsN8B\r\nyqySMq8X/HXHHh8W49KphcaYNVM+7uubuRQoUe49UsLxQ+NY3vbe0ttYOICT\r\nLzUzkXxGQcBfPT3QbnHKwt63Uj+u0H01yRNB/j3VS2JCtQZgZ/RujIvbOzGu\r\nh9N0Jfm6DPzGN8CICT0mratLZMq/ykOW3m+qbVGBcehTvxMvKgSj3Is97Rtp\r\nDrbYBsZpEI6vaAE2eTgYo9yfiKi/7ZRcXMF4BJZALPTb9fwI3qEhsmt96+hD\r\ntRVA/anGK70oMnAexm3pAB+K9ng02swK2lRMxFLbc9hv35W1k4RP0WhlfW16\r\nPPnBAk5DeI3UoMhwknd1+C/7CKoZvx0puxF7KFBLDzKgBAF3w7kZd3NnAuuZ\r\nSAFxwfdp8vy5Ff3xndBZY7oMH5z8+PCRXhc=\r\n=xjmS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.0-alpha.6_1660917468319_0.2431144175949127"},"_hasShrinkwrap":false},"29.0.0":{"name":"pretty-format","version":"29.0.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.0","immutable":"^4.0.0","jest-util":"^29.0.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"75006e46c76f6fda14bbc0548f86edb2ba087cd2","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.0","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.10.0/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-tMkFRn1vxRwZdiDETcveuNeonRKDg4doOvI+iyb1sOAtxYioGzRicqnsr+d3C/lLv9hBiM/2lDBi5ilR81h2bQ==","shasum":"a9a604ca71678f803f34f6563a25a638fce267ba","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.0.tgz","fileCount":25,"unpackedSize":68506,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGu3X56eyNlXEJBkdwnE5j4m7npb3KK0tp5UKi+QcowIAiBunSxa4au7vcvA/YosGsYy3sowx6RwW/T5+TkvVpPcxg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjB2wYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqz4Q//dgfsiKF/a5D7FfiIBOfXtbn/iLdbGqK75HvrXeqXZEmgtVHF\r\nqQK+i3BAv7NxywVHrQo+0PSWLr94l6GO+7efLDRjVi3VgcNV9hZ7VrS6/eer\r\nNWAWn2aTNy3J1fniprzaDXuo3lVSr5xVKhEFOHaX+7TLfY9hJMfBUJVHVsGv\r\nkGTIafuRTZj/jPyyXbVOgOo38KmVO+vENjEmlsS22UtxyGbtvr85Id91rSLZ\r\nZHhtXubArdBwQ0aSBA/u3Y4IJZo1XgXEglAwjQRBZL7wmYm3cXwjkzrLD3Gi\r\n1x2W4u+p2kuMeO+NyiAkMsjVQqwGziVawidDPZKq46NjUkH65QLWcoWWvvFm\r\nuyZdQsOowcddvTo0mcutubkCdXhD6GiEaD2kGNnd66WWQKWXOhYATDj75+ks\r\nUOuUIQihe4Bk0WADTjZkzYemmA9JDH/0hGnFR+HqIlBbJVulN7fTchIGLOnJ\r\np3f84pGbyP2YtNCCnOaK6JPimOHziTG3z3Xsqkt516paC7zTFzPWg/oPbP59\r\nYiipTGmOeeBuCYcEwcy3oxNs3b9twrXNWNzGpUvAEYYgyQJe7b486uAb2zpR\r\n255xLmz5xlQxAJ2CYW6iTRfNQsJbCWuSB/Ara1P8eExe8+DCEn8phCUPco8D\r\nbAXwkD94BVTxZdTCBK32s8ddPW094q4t6f4=\r\n=AyLc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.0_1661430808341_0.9411779135138714"},"_hasShrinkwrap":false},"29.0.1":{"name":"pretty-format","version":"29.0.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.1","immutable":"^4.0.0","jest-util":"^29.0.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"b959a3d3bdf324ed1c7358f76ab238a8b0b0cf93","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.1","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.10.0/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-iTHy3QZMzuL484mSTYbQIM1AHhEQsH8mXWS2/vd2yFBYnG3EBqGiMONo28PlPgrW7P/8s/1ISv+y7WH306l8cw==","shasum":"2f8077114cdac92a59b464292972a106410c7ad0","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.1.tgz","fileCount":15,"unpackedSize":60594,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1TTlGHYYe7BBsu3Ln8VTUyKSI7bc/f77JEkOCoLD1OQIhAKkbFTlgEL5nOcHD5J9ebuls0+Jl22nXwV/70SOCwfwb"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCMvyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFDRAAnXbOvDD+Lmq6dFMiBlKDuWDAl6JmSqTCtnsxdAWINZWGT5Jq\r\nNFGDNcEKsV+tljoIPkbub5h5640I0CK1ktyg4L5xW9dPMA06FqBgzj9gBGmn\r\nLUpZtINegfpeXhfcPAhtU4Is5QX1A+mpXiX6HH9gZ0tV3FfHN7g70E25wfPZ\r\nb5ep+y7yv3XFRQ15G0T6NLqE1K44MKSKEAZzfcCiwcFwlH7G8Fl340ceNRl+\r\n/SB3m61MC9d+Cyn+qPIawWolwtsehfyrk2MLeivGdIKtrdqG44DDhP2llJan\r\nrQ3hORHSWztSN3IHaXnVbXfD6ALQ7CelfaQBPqHNETHUa8RJU/8PQK9Gc4hE\r\nCj6R2sSHUW6rqbAReKlUh2bzUV80PYefsIPDII42Fah9RpWGdVT6gKXx4xO4\r\n6SrAFEPPR7PgLUxAluReoRbuS2yoVJ8olDxK/+YC6mmgAZ2N67M+gnC2WWcQ\r\nDxF7KI8H3AKUiU7vDvDlALssD2ZJbK1+GHBUAYdhDlmgSTVdAK1Q4WEsfXlC\r\nqvLboYpFdNVaHeyce4fJTaFc8t4aJKshznNb5vYOAvy0QmNoU1Kz+5NgmMhv\r\nuv/imAftnUMb0BH97UBxTMW88rBjmEjUQIaE/Uyt5emFD3uueto6d30C7R13\r\n6BERhLmI+Jh8HAB9lzybCKSoje0pnu5wcSc=\r\n=A61B\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.1_1661520882041_0.8620373554141116"},"_hasShrinkwrap":false},"29.0.2":{"name":"pretty-format","version":"29.0.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.2","immutable":"^4.0.0","jest-util":"^29.0.2","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"616fcf56bb8481d29ba29cc34be32a92b1cf85e5","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.2","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.10.0/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg==","shasum":"7f7666a7bf05ba2bcacde61be81c6db64f6f3be6","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.2.tgz","fileCount":15,"unpackedSize":60594,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQKuFagWGbZZIDyWq0HMwrVeOxjeoApgGtGJ+PipDIAAIhANpzcIPhOlKyuMjG6aV3AIKjjJ/Vz1m9kLuIsi2aXI9l"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEzDzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrwGBAAlfDvHpNt47v0zsEob+zUAj1xFg6Xn29fbCneUTJ6PNiLEHMa\r\n9/BEi+2+DW/QYE6Eah/FVRaau0ngbUGHfVNZh7vyjTAXy0AOMXGgAp/h1SNa\r\nQd/NymLP0ZQelkR1hd14OM5m5E8x/xmcLD0RsTqJFT4p9o27CmOt5RcO1oFa\r\ngxiwnn1Q3t2fmGa/cseiuFvJdv0EjZmHIw/LACxkd3auBfK1Qr3pCHoPl824\r\n9ZwBC3+08/n6AowNlkXs6dMzxjqMR/gIUcoIrkk34qR70jyk3wt6iqU20bYP\r\nc1RsdsF4s7uqrzs/uPXGi7wdEKaaWojMpGLuLKYodM9/H8IOiK4HF16FGucL\r\nmo//7h00sQCm8+JwSmlYTF0VSWBfFU4NfdeQk1iI05rsHD5ljpNVhMQWsvp7\r\npy9RFKyr/0ZKWGm9YnMXmW7amY6VFF92Lt/JJXCSKT88U8AhMA2J9TO0VlUA\r\nDXR3tdpBJJ4jskpI4WLRNL7c3m04qvs+ZaGnPyGFxafpoWBgnN3tC6XIAekF\r\nReT2Wqu4c/X3i3BsoquAY1WhoD+xViihTUZLpfvAd5UHwMnd6oVlV0d998nK\r\nxppDV0aMtmrDUCtIywKAOxuMIg1hwEHvD04e0vx8NT9Vged9CheMtsy0WZxR\r\naz5TdBoSZIFwRtWKxWT7BBAwwPtiw8pIyL0=\r\n=AW1E\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.2_1662202099646_0.6622745079603374"},"_hasShrinkwrap":false},"29.0.3":{"name":"pretty-format","version":"29.0.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","expect":"^29.0.3","immutable":"^4.0.0","jest-util":"^29.0.3","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"77f865da39af5b3e1c114dc347e49257eb3dcfd1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.0.3","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.10.0/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==","shasum":"23d5f8cabc9cbf209a77d49409d093d61166a811","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.0.3.tgz","fileCount":15,"unpackedSize":60594,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGpr7TfDZYhksSr8ouHKq6fcqvxhf/2IKvGRT/S9VYcFAiAF9awC/rvlKhYCoAG90NYC67yyLXMy14Qt2WubkAqXVw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHKIiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIMA/9HeGxv87iI6EixEsUpaRrCw5iqQtZvR1YztYQLwG7zd4Fb954\r\nBAGAwyPVwBoQ4LgAPJDFxAOa6ggjRbP3V+kbrXCU6HI2iAF1tsepHB1fhRG9\r\nmRl0EawF4bFq5iGR6neI6cV2nQgdHbyOkX9Ku9uQyhsVQjgAdEB0ql61QMmY\r\nj6krxnb/iHKBdAC7fUbG3JDbIe7tEucRd17sAnbD/zqhE6RhmuHEyceXCMk5\r\nEZnwdVKlS9YTOfLv2+dfkXKPSfGGKvpqFEr6Dg4IBuq2UHaaI3PPzbfpkbto\r\nlfTNzobhQyd0bjrLDDuUqJETSCKuoGNQBEP3PggC4dYZX0kEa9XTJRX7n1BQ\r\nkh86zN46p9okuBaHjaeCjZ2MfeVs2Ha4a/Oq2F9jIcYoOpe72q/StEpUuqRi\r\n4j98iV1MZzAMsq3JFOgXsS1sGZIiV+s3kx3hUhtD4QADFoaZ9F2SrlmR8E52\r\nwrc7fOsFVEW89daFJo7jI2zdulnBLyLtlPGJvIeISmjX0obkeTCR/hQtZZ52\r\nyFWIa/+4sD5PWDwtIATJA3EoZxi7fu3qeP4Wy9zk0qnOWbZiYdRxp2seCUVE\r\nEY/yL78vkNDYt12cvbyddPnTssMTLxyet1yQ8YZYPWsHV/QWfMCDbB6emtnC\r\ntsYr/xoBCE7y4S2AcXtKQ9QW79e2jotaX7I=\r\n=9du1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.0.3_1662820898280_0.5999375072132109"},"_hasShrinkwrap":false},"29.1.0":{"name":"pretty-format","version":"29.1.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.1.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"51f10300daf90db003a1749ceaed1084c4f74811","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.1.0","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.11.3/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-dZ21z0UjKVSiEkrPAt2nJnGfrtYMFBlNW4wTkJsIp9oB5A8SUQ8DuJ9EUgAvYyNfMeoGmKiDnpJvM489jkzdSQ==","shasum":"ea3de2feed5b8d19c537a12fe478ddc8b45da6b8","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.1.0.tgz","fileCount":15,"unpackedSize":60569,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGeUZDPE01zm3T7DAj4VRASd2pGyNReCHi4EKQsM15G9AiEAjGGiLyShBKotQUSjY5b3nyAC4smCBQ82iSG5srkLkUI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjM/nCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqe1xAAmLd+YcRMkVk0+oG+MbEit646Re/oWiy9Ujdnj/gFg06huCJg\r\ncf8vMYHKFzkYwCFOMfJ5YjZcla8rWlQT+7Dbt4X6uLWwhBJRz9kpBT3M7dWh\r\nUViPzjJzmn8HOaziG4D2glZ1WMu8XcxtxFKai5yq/V5l1oIiqf42L5jTPgFf\r\n65zPyexOb0Uvv6IByQDN+p9nwUn1jsYAkwqAqirNKuJe9iztHlUPISG5zX9v\r\nnmnADpeYKzQwDFTnz0bwxt5IdJASk9YNcpDAeq0/i3YXOleqbT5WMOUWUiUq\r\n8Q5wtGC/I1pgfLTFCIilSpnWYoi3TGIz+xR2OLrg3QcDKBTr+wt3frNrKrBw\r\nLFxO6N6ZAGL1msxSyE+zmji1cs2ZTiJRgPaDLOVjoYrgoi6syfPNxEP1hoC2\r\n8d06MoQPlzP0bdj32QqpiEQomcFhrQTBJzoV16vsogomHPP73db61OjHPRQl\r\nCtH6A3TTIwHOrUumukInHRs1Dc97rohxm+y+j+EZM3ZY7uoiPSIAZZi4k3uu\r\n6haFfjhpMj5OvnJc0TGb1rr2C+ft5R6YriK2B2r/kTKNZmHbCXoPDMLJr9ye\r\nQmx4YDjeLe1VzTTD/OOhmn2wjHe3MNeK0ghKE8M7REH29+3tJmMnKevGT1uW\r\naBoK9qgiHzbKb4H6J3sYYzD9u5ZPrbkkNBs=\r\n=YZ5z\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.1.0_1664350658480_0.45739552930662986"},"_hasShrinkwrap":false},"29.1.2":{"name":"pretty-format","version":"29.1.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.1.2","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"3c31dd619e8c022cde53f40fa12ea2a67f4752ce","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.1.2","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.11.3/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==","shasum":"b1f6b75be7d699be1a051f5da36e8ae9e76a8e6a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.1.2.tgz","fileCount":15,"unpackedSize":60569,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICw9+QEOL9sEqz1DJ2vekgkai1OueolgcmNkxgMSon6sAiAWNt4+Ts+4AU/sL8HEAF2m1FZeMvnH+J9f5xYz0/Qh8A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNplEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqO7w//fKqmrLhHw6L4KooqPZ1Y+l4TLXItZU93gCxu9Te4l2goG4i0\r\nazviqHKTbCqNLHZjIDmJmsZfn1NLEj4LX6M1eFpECQwASDFE3kgOqj9kCmU0\r\ntNianavUP1b24ysLkuyFLkhCN6cOHQMaOeKkgU8pKK/jHgYDkmE7dkyS3mF0\r\nWLU/IGYGV7yfC1LXqVWeWFawazm9isON26s3OyQHgHUVbkft1h7F1kTNG/aJ\r\nzHvt875ioMJIpv81bDl0l4f5pIOmvpswnashQz0gISBN/K+hkuzijPAojWtW\r\nQY1rPA36195L6Fdo2/uAH5g3mZ8Y/MC6nUGYM808kUR0Pn98/Wj/IwLoGk8E\r\n8609KDiX37S7iA+VKUWav5dDYBQx0KZowraUG6JYKjhEFuSJyWW1SE+icO8e\r\n0jrGtnQETPcCsXRSdZS/Yv6J8xB7tnKPbC7yA2Fcn/hUUL1/LARTUZSGPgdw\r\nvR9LChABJB6LYGbKcclvtOyOOP8XPg/Glqn8cZBxhb+UfmPBnRHanVLDoytj\r\nFxrPyEVinFsZU6tAtCgHvz1G20L2yF53nDVMDxfFw1xSFx+HQZ2W85lDqcE4\r\n7bfvJwcmzVoONVOVkbOIMSXvTzYqXA3N5PaIVwni4RPH904Z0vnCSjcc7tM9\r\njHEEK+osIssZd5tRsJrbQBlHZo1j7Y89CO4=\r\n=+4jQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.1.2_1664522564599_0.29613090444740164"},"_hasShrinkwrap":false},"29.2.0":{"name":"pretty-format","version":"29.2.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.2.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"ee5b37a4f4433afcfffb0356cea47739d8092287","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.2.0","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.11.3/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-QCSUFdwOi924g24czhOH5eTkXxUCqlLGZBRCySlwDYHIXRJkdGyjJc9nZaqhlFBZws8dq5Dvk0lCilsmlfsPxw==","shasum":"1d4ea56fb46079b44efd9ed59c14f70f2950a61b","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.2.0.tgz","fileCount":15,"unpackedSize":60414,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/5BwZgcywyfMR4s4GT1qU2GqEBeiryh6WnLYRqhJBuAiEAvJXAh+b5NmkofSx//ana5wlmNiysSt7vJrYVrSGgHYs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSShKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr09g/9FskfmyoAVnxjV78e2Lua8mm8MYaWcYvW63+W6/806UK8dJw4\r\nzSwYf/TgIdTbsy/FFyiJwg2MLuZrQREXCJ/DYikDfu3oBrOdQS4qngC1qqYY\r\nOcykMHqXPOfwlSs9Yag1osK4od5a7tL8pp0nzUhdIA38VtYZd8v/G3rJ9yXv\r\nL1/04/bjkenK7r++SXTLD5SdDJI7s/aULIOUuxvfx2BQ7luS6PXDKtkj1ZGW\r\nZQL7rDqNgajH8GcQJtm3STXCCFXCi3+YUEhU5TjSPv7CkuG9s03TpMhvuZdZ\r\nUc8GIhU80Hxhb2/EMu+NsIJ2Jn8dMdPe7AaVcMgSO5Kn6dutaA/9rSXPJkd+\r\n1phKpp03Uf0ue+VbXKVwXHnTQzwku+aoGWVZwSlLngpwWPiycueZhPkAZNIi\r\nxEX+N4Jo+DfGphHIbASsJ59lI3p/BJL1EGj4sbsE8iUHqHfMYUKCTIPH9wmP\r\nrAasusAtHXdUVSGoV9fmsTr2Iq8TRZgPZ/J9Fi7gTKTqLbM8AjHErjp1JN05\r\nFNZ1qwQUvawu20Co30A/Pjm071hUU973lcVKOqtu1rW8iGzOuxeyzKcF92r6\r\n5F2jwoaAt0n7DfidDcg+mnK5ViHyVaVmybb6Ksr6w1N/mK0iEDaoadg8oQz2\r\n1Tf/ffpI3YJ6IGiBQHD2I2V2qxhVWAuOzgA=\r\n=5Y39\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.2.0_1665738826366_0.8868311397692656"},"_hasShrinkwrap":false},"29.2.1":{"name":"pretty-format","version":"29.2.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.2.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"4551c0fdd4d25b7206824957c7bcc6baf61e63bf","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.2.1","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.11.3/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==","shasum":"86e7748fe8bbc96a6a4e04fa99172630907a9611","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.2.1.tgz","fileCount":15,"unpackedSize":60414,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfmT4RAEL+UPCz50UhQHdo+XGaeAqICNPa0tVZxvJTKQIhAKpIR6j47qO7y847+c2tC/d2n+CCHFjHdDDzwnD0kjDX"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTs2LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJRA//Un8ngD1WtMysHR6hsVHNvHOrROX8qTWreEoefBlg57rAD7Fd\r\nPG6F5/XShoouwjq5Ywz3ptfBRCGj6JVGyyfjwB1gaJE2apMA+t1ambSCjyoX\r\nu93MiA3IAyxI7ke+wLGKO1iscbmehEESLhPooMqABhAEeHXTluVIr8qoheEc\r\nNyhNQQddYvzAus5Z4X1dKPenMu4HFeL4OvYy6rYSSTCjQzlvGy73dQvDfEWh\r\nejbCQigGVJrvcC7zNMtTrlJn6msmkTLzmIojZVk4aYz9UxrXehq1tU7bqsHw\r\nUwA9UbkytohNbJ5XT+ut0ALSP8wLEDuuCkkZvaWsh0V1TEHJQ6Ijzz/eNuJv\r\nlY5i6DaJUwQetGQzOxesFblAtbXBgbP1CAMVOky368ETJ+KoWqOpbefie9Lc\r\npDzdPmarJ+Gj/neH48s5VzV5iWPn+YFtwuFiMYz0t+n6HPnGOl5v4Vx1VW/B\r\nxmY356/A6BR6TQpXzoUykKfVbTKac2ICy+VwJhW3wlwpjE0wkuA6k7UTb8l9\r\nTTYJ2lp35pTNXe+qSHzrClejl6lM7Jju1PSWG36TqKJ49nOAb0n0IyXyQ9Nl\r\nvfam00rMesSbqcdOR/6gZ7DbHcBu+OSkUjnxyOO1iCBNE7rpgoxJexqnfGq4\r\nEUGWk1hXrGGGb2SBcwOtibczTxVB3fq2yrM=\r\n=qia1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.2.1_1666108810954_0.4642202645094913"},"_hasShrinkwrap":false},"29.3.1":{"name":"pretty-format","version":"29.3.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.0.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.3.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"05deb8393c4ad71e19be2567b704dfd3a2ab5fc9","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.3.1","_nodeVersion":"16.17.0","_npmVersion":"lerna/1.11.3/node@v16.17.0+x64 (darwin)","dist":{"integrity":"sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==","shasum":"1841cac822b02b4da8971dacb03e8a871b4722da","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.3.1.tgz","fileCount":15,"unpackedSize":60414,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkO+FK0nfjWDKmfLtP/f4SjJKJaDvO36zQBfG43KHpaAIhAJRoqlicMcD2FowL2URdDoiAYx1ag29zfv0Aadb33XPt"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjat6WACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdKhAAjwOtxpyWGJbrG60f+ldZKfY5wEk3Spj/iYUmCdkFrKoxF4N4\r\naXfPKUEbHNHexgiLd6QOWLXb26mh3eYpDwLJElYDn6b/+0WlHWgpgSYJivEl\r\n5obqEuxBjgmoSZb35aFRroupUQ9QNPh7e/1T/FN81h4obqkVvP+hQuHlx2bH\r\nb+Ry5fvZ82I0MYbVVR7eKGTfphgNzR+tErvy/07XbBFA+qUNnqgIxLSQbHjX\r\nToO+Uc6r9GjlO/1sn0Qf7PILF9tfhQewG0YeWmLtC6JD1D5wqvPeEGKLUNnC\r\noW/jdHFvnwQjTfqr49CnlVNUfEvOXbCNbg17UNmneW1p5t0P85RMuH8zXJQq\r\ntrUP+KwrHwjuPjEphZYYmHX4nCfpgo7QpXdlV/ih8Y6FKuM73rNFP27PQZGy\r\nq1STNCDIhZ5jJkP2JdoDGBJQ2kqAF7CimI0fZbOEpB/NPzKWKvLB9EisvTNi\r\nKqPZ/JquPLC3NDyFh1T7Jpd4KWPbEp5/5SudFYY+JovdqtXLjEA0wzW4aZGv\r\njDiaOZHepSI8T/NA8cH7Y5OxtDdc5DVkmJXklMizEUyok65a7r+e84A9I2Ee\r\nW4WZw6fPwpJPwY8vYdMZTOFAMl7w0I8QrHEjRrBN9CvOCQxmIm2XW7FiWWsf\r\nulXrkbO5qAhRb+Hyvn/0nC/brpnEfPyURcQ=\r\n=6v/l\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.3.1_1667948181790_0.6288508562159885"},"_hasShrinkwrap":false},"29.4.0":{"name":"pretty-format","version":"29.4.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.4.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.4.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"4bc0e8acaf990e6618a7bed1dca67760c20bb12a","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.4.0","_nodeVersion":"16.19.0","_npmVersion":"lerna/1.13.0/node@v16.19.0+arm64 (darwin)","dist":{"integrity":"sha512-J+EVUPXIBHCdWAbvGBwXs0mk3ljGppoh/076g1S8qYS8nVG4u/yrhMvyTFHYYYKWnDdgRLExx0vA7pzxVGdlNw==","shasum":"766f071bb1c53f1ef8000c105bbeb649e86eb993","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.4.0.tgz","fileCount":16,"unpackedSize":234033,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRiTUhJwsy3tpqFi3LgmWHzZv2C9AoyIK/P6TT39fnCAIge/DOl/yxucDRI1M/hp35T9Uy4OpJ1LEyDoh65lURTiE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjz7k1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZ0g/8DL41OgXsYlv7pvoiPP5MjGzu3gNhM4O7RtX80NPcTeyFrz23\r\n5IxfTSmEJBpyMis0jSZeFFQt7b3NWrVXCtXbspdg8udQDvG9dmwd/1NGHG3L\r\nJYCLzPtiLQpUSBqULYEFA7HeBJUGSAmrmc70a7JiCxRWlD6yfA8HmlumM3pZ\r\nIbRv7j+kqnIpMU1ofGDEebIxOgtmUkFb1N16y/5zXn4K5ldSvPhrfs1wnWLb\r\nHo4dcTTJYiZaW3wnVVCni1aQ7iCLh+4ELL7LPkFVbC0JRR4iRIR4km222klA\r\nHa3QLw/RhIIWYK8FD476rlyGe/iD1nrLPjDkNIArWLmNUKjAoGpNbsOP2q8Q\r\nKf6k11Knn3dJWv/cJbhttNGCoQwl4TfcmQcMaEMt1jM/S743hKGnMQJ/tAqR\r\nyucydvcWc/2c6iTeVpDtQFk4fptR+vYMW5vXkuvp9c5VEOyMuBYb9mkUCOZS\r\nsdNgywTrpsy4iWHZdUpQ5pc7/meUfgm1ZkBXugot1owNpxw8WF97tFLYrOYU\r\nEhuQdkTNjX/cRtwEVCZkFCd07k0muvWiUAE0/rs1FZCDmX+rnHUwJvZsyteD\r\nAIsNe77z6ydmXhwuu7zueZPBsE+pYNSbfHNEuQbx0utYB1pE2IDb8KNHalNG\r\n1PBGr+zF1rDSpTX7S1FlpdXKD131ZlG85Fc=\r\n=gG8a\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.4.0_1674557749379_0.08312055675861663"},"_hasShrinkwrap":false},"29.4.1":{"name":"pretty-format","version":"29.4.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.4.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.4.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"bc84c8a15649aaaefdd624dc83824518c17467ed","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.4.1","_nodeVersion":"16.19.0","_npmVersion":"lerna/1.13.0/node@v16.19.0+arm64 (darwin)","dist":{"integrity":"sha512-dt/Z761JUVsrIKaY215o1xQJBGlSmTx/h4cSqXqjHLnU1+Kt+mavVE7UgqJJO5ukx5HjSswHfmXz4LjS2oIJfg==","shasum":"0da99b532559097b8254298da7c75a0785b1751c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.4.1.tgz","fileCount":16,"unpackedSize":234033,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGk/D9xCljn9amHoHufX6GP9/HmzEcuFeqq5gXP+puoAiEA8ce/zwfIBahvpHMqHUZp7EcRi1QRpuN8wJmJd3LMr5U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0pdzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoDA/8DenCrElpvbJfq+W8zxkR2pZ7adytnxh1jz1hiaWKbY87VvrP\r\nJ8M/0jP2zVkWEIS0i3dY8wb80Ef3zyq3NzWb2qoAQj+xR3TimbZ0uEvVy0aS\r\nqbjfXxXpx2UqQPqDP+LWHwnOI1X12SxXBArTMnPWvpnmGjg2/eYiqQqgjqvW\r\n4UFs1tsMfoldsDSC4nAnXaDBex8k8SoLGyzWHLwJ8cFE/mLN8xzum3ji0HXf\r\nx4IC831ywN86qYDNSisC59wfNA1mgjUFp98rxsNtghPX+ID4+B0KnAdp6ow7\r\nb/NJQPfgxCeE+PZvHZiaUk58DbVm17/NAmx/dgfsa7dxHT764DcXB2j8Ywo9\r\nxfkPbE1HcWwKqNSiKCU8c1DCt3yoVf7b4LAe4MMnYHdsWvnGGDQy/vpYuEAe\r\nW6TeIY7TA4oRW2OUcdpuHgDFrBOn1/16xahfSIAlGIFr5pKvoinst0nJCSuv\r\n9SOI66OHOr0b4Eg5CLCj6kZYqJ/SC3NtRMHqBKFNlt5r5dZyujiKEcOjDfmS\r\nDtbvQO2jF0LZieKDbsB1z1CEKjD9X0GGynOYAslpc3Ahw2pKIQuy43+9FmRu\r\nQptVzfnLaO1Ebhx+Gj0vKBMIEncj4r9DMD0FPZ4iZGKBL/oUYH7wRonwSg/o\r\nGAhTymFz/Q77f5sK6qqfXNaEgh8CEzTPCYE=\r\n=EI9d\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.4.1_1674745715008_0.8630518276533083"},"_hasShrinkwrap":false},"29.4.2":{"name":"pretty-format","version":"29.4.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.4.2","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.4.2","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"f0fc92e8443f09546c7ec0472bf9bce44fe5898f","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.4.2","_nodeVersion":"16.19.0","_npmVersion":"lerna/1.13.0/node@v16.19.0+arm64 (darwin)","dist":{"integrity":"sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==","shasum":"64bf5ccc0d718c03027d94ac957bdd32b3fb2401","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.4.2.tgz","fileCount":15,"unpackedSize":60414,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoHEMbQvmdadwzyjjhvxG7K4oFOclVcPtDLGCPLROt9AiEAwrUo8bgaVzwdSNMSrs+JlAoVoITMQBTMnKFe5vZA3N8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4lX2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAaA/9F2cA13ioJ8skbe0hMPJ/EdhNHM32sdfP0ndDWClv+T0yEwCY\r\njEC6ZQ3i7WSkdToHx+TuuvFp88CGEOiUK12nYUpTFOMZJ73lktsPl/hBikxq\r\ncO9jqzqjo0f3UT6QmssyD9JiBjwv1KDkmqnFGy946kZaA0nYaElD8NaZJiHw\r\nPTFSnw2T3Cl/S9/HpA7sICfxvxtFVVrjtDASo4l/6sQQjwrdFPON0kbqeKQf\r\n/ggpQCX1COr1910j+mX51YiA7RZq1XwsTjcEBpNV9oxjAvNdLvXWkrr93LwI\r\nLyaUUL5YM5HrL3ymEbxP7rbM4NkYdw9+1Bb9OuIABZCSSbetLu70lEIBKPwT\r\nLK8x3wtgIXoOF/KYmgVJeQIETLkuzX/f7FPpvY8Lt+w2IFazS8zb68MZKtJO\r\neOtcxrxYAvbKZ4llBmK94QK76zlUH1MEERYHAyIATcVhYl4NfRegrTWOutQ7\r\ncOKJWcophtlq6NLm3QqrkqD5rd1aap1+gErIUjVxAZQTJXsQn2yP5zmOsETn\r\nYatNcd/mINme0zaSL+g7bli93P/f5FQVoVXcsm4vx5eAkDZSFK1JQinoukf2\r\n4J1kCoc/RDAe67boR0RqJR5xALN2cu0wJnw7DOz0K5G0BnVvrzNe65ci7SO1\r\nzv+JcypNjgx+iBF/z1uNtm1FgqVhtxs8aj0=\r\n=E+VC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.4.2_1675777525724_0.5004565008979032"},"_hasShrinkwrap":false},"29.4.3":{"name":"pretty-format","version":"29.4.3","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.4.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.4.3","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"a49c88610e49a3242576160740a32a2fe11161e1","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.4.3","_nodeVersion":"18.14.0","_npmVersion":"lerna/1.13.0/node@v18.14.0+arm64 (darwin)","dist":{"integrity":"sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==","shasum":"25500ada21a53c9e8423205cf0337056b201244c","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.4.3.tgz","fileCount":15,"unpackedSize":60245,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHpVpaerrGTa5yYIL0lNclV7SIH/0jWSgmBOwtQULrMAAiAirATxDMBhqcxOcJnKgpGZwVQrxeS0ekHdj7LgXJ6idQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7MigACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpP6xAAjahk7im5xIgTsboiEN+/T4+V7P8ua5fMSGgV9OaaP8sIuxtV\r\n+yGSzsc2GFBuFUzR8GwkBQ08/Xd+7I37UHhqKfOt1SRQD+WhLMJy1tOEJQYG\r\nlyT2BhdmEeCVEerL4TOD6MWX6PhryogKP+5oJRQc3RIqVLKHXkcBct2wRzb2\r\ndWc/ZKbMaYjiS9NydobXH1ZgloUGEBasV8F9aFtAtQQWvlX9Sp0zXIu0YNap\r\nuaOryUSECJcyplh4Pkg4S/68dH7rroBb+Um1whZ7cF9PmOmmkER0hbM0xDrq\r\nVE/D9oJPAjQXCMwz0FiKkgFLmZRzurPyfzZfRXh9iiJpI3LVbI+6AWgtb4rt\r\nUFnY2kRNWVuhkla+2RjhHyCZeNGIUy/E8yvG2PLGEBCMFRgB63r/y3wKcS8w\r\nZy313mL3H3MYQPUdk5M+8kseFfza1gnfHuiTPpBRmhNqR+ZMFRvcP9N8PqQT\r\nQDjZsRrrqR02IO+RcitKKg8pDOWaXlfOfx+3zDYM9xOkGO2PKrLJFjiCoG+1\r\nIA7EyRGq0sTNwxP86rHPypnpciPAwPXXE+F7RhMr0nAhQnDEDoiQkxEkmzTW\r\ndQwOD4zuTYP7yipmyCgRhas4WOUwZYb1/13c7UsFzGYcYJbuzFlqmAo0ujA8\r\ndPBbu/wA0uZ/e/uyqQtGxNgHbjOeMUGr2CY=\r\n=GzxA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.4.3_1676462240384_0.7010023448990954"},"_hasShrinkwrap":false},"29.5.0":{"name":"pretty-format","version":"29.5.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.4.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^17.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.5.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"39f3beda6b396665bebffab94e8d7c45be30454c","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.5.0","_nodeVersion":"18.14.2","_npmVersion":"lerna/1.13.0/node@v18.14.2+arm64 (darwin)","dist":{"integrity":"sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==","shasum":"283134e74f70e2e3e7229336de0e4fce94ccde5a","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.5.0.tgz","fileCount":15,"unpackedSize":60245,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUvtXo4dhiUnRPLlRKZ0Y2xEqT3yoaLXQwUL4nZmzRmgIgJJXfRXxW0Z4mwFmgJy8BJWoJ73gEBEMPPogr7tQ60ls="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkBeuoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVVw//f5EPJ+limL6GY+Q048Ri55+yK0YGaXffb1htzPO2h7GcmwMT\r\nK6rTDQkgu0y/GviLYdqEkDgbr+gNlf5KxIFXg+g/VWDgJqAM/1XqwzUCSMhN\r\nIfRuSkIVSk/5REOMvLS9Am8beRqLbMeDEjJtndr+4+o6Ky46tb6LREcz+Q4s\r\n2Oqw1WQe6PnfyFQl+hzoRonLOIO600BFdXjvmpGPE3Gl48WFSspgVi22aGlv\r\nbOMIJvaCalTbwcArhZZGMAM+CfDCbSepYpENfU6kqvwBw4gD8UaKHGl46cCx\r\no/DtemTJKK5kD9NX2WjwLIevmaaYNUuO7fbevJjo7s0whqo0W/eMz6Bz4JX3\r\nkORZ2UtGFWNVBoK0nYnXkT/5kisANlBB1uC01riGO+0vBn11Z2XG60i72Wf5\r\nOJFS/JujSHy9CDuJfmX1IjcrucZhn/9SNmnLgZUMGiRdYW6QwyOIWn049jgG\r\n/oH5dmTFE47P78Eqc2j/RKtASK/iAaCXLcXrY3MTuIq0rs645MDgyimam4pD\r\nqqKPfNSuSQ0HEgupx3uxa2tJ0setqZuxHMicSDFBsYztL9nVMVC0ipmsyv2+\r\nldfmXFfgeVQ61jmoLs2cGsREaW1WzzQhfLSsbcwInLkXaSWZb5Gu42ajrK96\r\n9/gjEDE0AJalrNnB1Hmb+LZja+LgPtU5KNw=\r\n=6b/r\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.5.0_1678109608260_0.5383222058354675"},"_hasShrinkwrap":false},"29.6.0":{"name":"pretty-format","version":"29.6.0","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.6.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^18.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.6.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"c1e5b8a38ef54bb138409f89831942ebf6a7a67e","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.6.0","_nodeVersion":"18.16.1","_npmVersion":"lerna/1.13.0/node@v18.16.1+arm64 (darwin)","dist":{"integrity":"sha512-XH+D4n7Ey0iSR6PdAnBs99cWMZdGsdKrR33iUHQNr79w1szKTCIZDVdXuccAsHVwDBp0XeWPfNEoaxP9EZgRmQ==","shasum":"c90c8f145187fe73240662527a513599c16f3b97","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.6.0.tgz","fileCount":15,"unpackedSize":60734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUGX8EvczR7GZpLsEz8F0B3s+CCA4MRMCY/7epMmI2pgIgXDneyUpU8r2Qk/6uQY9pCSOkkSN94a501SglN/vmAN8="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.6.0_1688484345028_0.8853895362115405"},"_hasShrinkwrap":false},"29.6.1":{"name":"pretty-format","version":"29.6.1","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.6.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^18.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.6.1","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"1f019afdcdfc54a6664908bb45f343db4e3d0848","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.6.1","_nodeVersion":"18.16.1","_npmVersion":"lerna/1.13.0/node@v18.16.1+arm64 (darwin)","dist":{"integrity":"sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==","shasum":"ec838c288850b7c4f9090b867c2d4f4edbfb0f3e","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.6.1.tgz","fileCount":15,"unpackedSize":60734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC97ZlP7i/68rYh8+Ml/tyJVd74LqZcFmmayUnsNoWOZAIgNyGyViedGsLN3ywSd+y2+K68GMfUHoboUX46ASK7plo="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.6.1_1688653097488_0.9030095453365572"},"_hasShrinkwrap":false},"29.6.2":{"name":"pretty-format","version":"29.6.2","repository":{"type":"git","url":"git+https://github.com/facebook/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.6.0","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^18.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.6.2","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"0fd5b1c37555f485c56a6ad2d6b010a72204f9f6","bugs":{"url":"https://github.com/facebook/jest/issues"},"homepage":"https://github.com/facebook/jest#readme","_id":"pretty-format@29.6.2","_nodeVersion":"18.16.1","_npmVersion":"lerna/1.13.0/node@v18.16.1+arm64 (darwin)","dist":{"integrity":"sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==","shasum":"3d5829261a8a4d89d8b9769064b29c50ed486a47","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.6.2.tgz","fileCount":15,"unpackedSize":60734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIp6bqp7VFMD53a1jLOR0bpu0Hg4KCBGJiQIBjyXjrvwIhAJmRG9sdAkcns1+7eYZSXqrAwLOIwRYpzb5k8ms0cA5X"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.6.2_1690449689309_0.3925216201279702"},"_hasShrinkwrap":false},"29.6.3":{"name":"pretty-format","version":"29.6.3","repository":{"type":"git","url":"git+https://github.com/jestjs/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.6.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^18.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.6.3","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"fb7d95c8af6e0d65a8b65348433d8a0ea0725b5b","bugs":{"url":"https://github.com/jestjs/jest/issues"},"homepage":"https://github.com/jestjs/jest#readme","_id":"pretty-format@29.6.3","_nodeVersion":"18.17.1","_npmVersion":"lerna/1.13.0/node@v18.17.1+arm64 (darwin)","dist":{"integrity":"sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==","shasum":"d432bb4f1ca6f9463410c3fb25a0ba88e594ace7","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.6.3.tgz","fileCount":15,"unpackedSize":60732,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSaRITgQNTVZi6tTnSUWR4oBdcEKX7FNBdumgX97YWAAiAImppFVadPZvDaG6ubPThZ16F4UJxkNMkJIUTcQ/i/wg=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"scotthovestadt","email":"scott.hovestadt@gmail.com"},{"name":"rubennorte","email":"rubennorte@gmail.com"},{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"fb","email":"opensource+npm@fb.com"},{"name":"aaronabramov","email":"aaron@abramov.io"},{"name":"davidzilburg","email":"davidzilburg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.6.3_1692621548439_0.36589474846404335"},"_hasShrinkwrap":false},"29.7.0":{"name":"pretty-format","version":"29.7.0","repository":{"type":"git","url":"git+https://github.com/jestjs/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"^29.6.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^17.0.3","@types/react-is":"^18.0.0","@types/react-test-renderer":"17.0.2","immutable":"^4.0.0","jest-util":"^29.7.0","react":"17.0.2","react-dom":"^17.0.1","react-test-renderer":"17.0.2"},"engines":{"node":"^14.15.0 || ^16.10.0 || >=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"4e56991693da7cd4c3730dc3579a1dd1403ee630","bugs":{"url":"https://github.com/jestjs/jest/issues"},"homepage":"https://github.com/jestjs/jest#readme","_id":"pretty-format@29.7.0","_nodeVersion":"18.17.1","_npmVersion":"lerna/1.13.0/node@v18.17.1+arm64 (darwin)","dist":{"integrity":"sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==","shasum":"ca42c758310f365bfa71a0bda0a807160b776812","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-29.7.0.tgz","fileCount":15,"unpackedSize":60702,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfteTkv4JMTuP3BM7i8HYJ2que/v1ACZwrl7IIown/NQIhAK3WlT58LYT7BI2HuxDyZVcwwke/6KkIM1zEWrLYF9rH"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"aaronabramov","email":"aaron@abramov.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_29.7.0_1694501021685_0.1467621672358317"},"_hasShrinkwrap":false},"30.0.0-alpha.1":{"name":"pretty-format","version":"30.0.0-alpha.1","repository":{"type":"git","url":"git+https://github.com/jestjs/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","require":"./build/index.js","import":"./build/index.mjs","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"30.0.0-alpha.1","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^18.2.0","@types/react-is":"^18.0.0","@types/react-test-renderer":"^18.0.1","immutable":"^4.0.0","jest-util":"30.0.0-alpha.1","react":"18.2.0","react-dom":"18.2.0","react-test-renderer":"18.2.0"},"engines":{"node":"^16.10.0 || ^18.12.0 || >=20.0.0"},"publishConfig":{"access":"public"},"gitHead":"d005cb2505c041583e0c5636d006e08666a54b63","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :--------------- | :---------- | :-------------------------------------------------------------------------------------- |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function\\|null` | `undefined` | compare function used when sorting object keys, `null` can be used to skip over sorting |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :--------------- | :-------------------------------------------------------------------------------------- |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function\\|null` | compare function used when sorting object keys, `null` can be used to skip over sorting |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/jestjs/jest/issues"},"homepage":"https://github.com/jestjs/jest#readme","_id":"pretty-format@30.0.0-alpha.1","_nodeVersion":"20.9.0","_npmVersion":"lerna/1.13.0/node@v20.9.0+arm64 (darwin)","dist":{"integrity":"sha512-V56m4hqT/PwVCxyuNDUVZlCiYgP5KhN2vRl0DLnILQ7O0BvS/t3wXaZ9UX+TZhYesdq7ROHMiMO9JySieoDBXQ==","shasum":"ce4eb0a89959c3bcfd5d590acf90666ba5a92f31","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-30.0.0-alpha.1.tgz","fileCount":6,"unpackedSize":60189,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHko+iYZZKh9AaLB6LLKflvJCu1suw1WIIzBHIzV//zLAiAEieUtPHU0E/WKhCEJjuzn19EJycYX71cfQfOWR0m9bg=="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"aaronabramov","email":"aaron@abramov.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_30.0.0-alpha.1_1698672788870_0.7112117761424848"},"_hasShrinkwrap":false},"30.0.0-alpha.2":{"name":"pretty-format","version":"30.0.0-alpha.2","repository":{"type":"git","url":"git+https://github.com/jestjs/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","require":"./build/index.js","import":"./build/index.mjs","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"30.0.0-alpha.2","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^18.2.0","@types/react-is":"^18.0.0","@types/react-test-renderer":"^18.0.1","immutable":"^4.0.0","jest-util":"30.0.0-alpha.2","react":"18.2.0","react-dom":"18.2.0","react-test-renderer":"18.2.0"},"engines":{"node":"^16.10.0 || ^18.12.0 || >=20.0.0"},"publishConfig":{"access":"public"},"gitHead":"c04d13d7abd22e47b0997f6027886aed225c9ce4","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :--------------- | :---------- | :-------------------------------------------------------------------------------------- |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function\\|null` | `undefined` | compare function used when sorting object keys, `null` can be used to skip over sorting |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :--------------- | :-------------------------------------------------------------------------------------- |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function\\|null` | compare function used when sorting object keys, `null` can be used to skip over sorting |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/jestjs/jest/issues"},"homepage":"https://github.com/jestjs/jest#readme","_id":"pretty-format@30.0.0-alpha.2","_nodeVersion":"20.9.0","_npmVersion":"lerna/2.7.0/node@v20.9.0+arm64 (darwin)","dist":{"integrity":"sha512-9preHaHWIBEtQOkuN0vpCgfTo8X3vlWmDdCQHA1hSJ5vKNA1EGFr7iEQZDFLdqYe6DeJChdBqi+A+VFV98QGXQ==","shasum":"f69024bc3cc0398fa4d86a9b44c32028006e94ea","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-30.0.0-alpha.2.tgz","fileCount":6,"unpackedSize":60190,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6m5A7+RlxrEoVJm0p6UjOJkzHz+qCvWQNfmwMYUt8+gIgBLMNC4Gs26NS5bcJnM5dKnJTDjDzJNSOwHcjkCJl42U="}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"aaronabramov","email":"aaron@abramov.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_30.0.0-alpha.2_1700126899059_0.350975848984892"},"_hasShrinkwrap":false},"30.0.0-alpha.3":{"name":"pretty-format","version":"30.0.0-alpha.3","repository":{"type":"git","url":"git+https://github.com/jestjs/jest.git","directory":"packages/pretty-format"},"license":"MIT","description":"Stringify any JavaScript value.","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","require":"./build/index.js","import":"./build/index.mjs","default":"./build/index.js"},"./package.json":"./package.json"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"dependencies":{"@jest/schemas":"30.0.0-alpha.3","ansi-styles":"^5.0.0","react-is":"^18.0.0"},"devDependencies":{"@types/react":"^18.2.0","@types/react-is":"^18.0.0","@types/react-test-renderer":"^18.0.1","immutable":"^4.0.0","jest-util":"30.0.0-alpha.3","react":"18.2.0","react-dom":"18.2.0","react-test-renderer":"18.2.0"},"engines":{"node":"^16.10.0 || ^18.12.0 || >=20.0.0"},"publishConfig":{"access":"public"},"gitHead":"e267aff33d105399f2134bad7c8f82285104f3da","readme":"# pretty-format\n\nStringify any JavaScript value.\n\n- Serialize built-in JavaScript types.\n- Serialize application-specific data types with built-in or user-defined plugins.\n\n## Installation\n\n```sh\n$ yarn add pretty-format\n```\n\n## Usage\n\n```js\nconst {format: prettyFormat} = require('pretty-format'); // CommonJS\n```\n\n```js\nimport {format as prettyFormat} from 'pretty-format'; // ES2015 modules\n```\n\n```js\nconst val = {object: {}};\nval.circularReference = val;\nval[Symbol('foo')] = 'foo';\nval.map = new Map([['prop', 'value']]);\nval.array = [-0, Infinity, NaN];\n\nconsole.log(prettyFormat(val));\n/*\nObject {\n \"array\": Array [\n -0,\n Infinity,\n NaN,\n ],\n \"circularReference\": [Circular],\n \"map\": Map {\n \"prop\" => \"value\",\n },\n \"object\": Object {},\n Symbol(foo): \"foo\",\n}\n*/\n```\n\n## Usage with options\n\n```js\nfunction onClick() {}\n\nconsole.log(prettyFormat(onClick));\n/*\n[Function onClick]\n*/\n\nconst options = {\n printFunctionName: false,\n};\nconsole.log(prettyFormat(onClick, options));\n/*\n[Function]\n*/\n```\n\n\n| key | type | default | description |\n| :-------------------- | :--------------- | :---------- | :-------------------------------------------------------------------------------------- |\n| `callToJSON` | `boolean` | `true` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function\\|null` | `undefined` | compare function used when sorting object keys, `null` can be used to skip over sorting |\n| `escapeRegex` | `boolean` | `false` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | `true` | escape special characters in strings |\n| `highlight` | `boolean` | `false` | highlight syntax with colors in terminal (some plugins) |\n| `indent` | `number` | `2` | spaces in each level of indentation |\n| `maxDepth` | `number` | `Infinity` | levels to print in arrays, objects, elements, and so on |\n| `maxWidth` | `number` | `Infinity` | number of elements to print in arrays, sets, and so on |\n| `min` | `boolean` | `false` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | `[]` | plugins to serialize application-specific data types |\n| `printBasicPrototype` | `boolean` | `false` | print the prototype for plain objects and arrays |\n| `printFunctionName` | `boolean` | `true` | include or omit the name of a function |\n| `theme` | `object` | | colors to highlight syntax in terminal |\n\nProperty values of `theme` are from [ansi-styles colors](https://github.com/chalk/ansi-styles#colors)\n\n```js\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green',\n};\n```\n\n## Usage with plugins\n\nThe `pretty-format` package provides some built-in plugins, including:\n\n- `ReactElement` for elements from `react`\n- `ReactTestComponent` for test objects from `react-test-renderer`\n\n```js\n// CommonJS\nconst React = require('react');\nconst renderer = require('react-test-renderer');\nconst {format: prettyFormat, plugins} = require('pretty-format');\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\n// ES2015 modules and destructuring assignment\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport {plugins, format as prettyFormat} from 'pretty-format';\n\nconst {ReactElement, ReactTestComponent} = plugins;\n```\n\n```js\nconst onClick = () => {};\nconst element = React.createElement('button', {onClick}, 'Hello World');\n\nconst formatted1 = prettyFormat(element, {\n plugins: [ReactElement],\n printFunctionName: false,\n});\nconst formatted2 = prettyFormat(renderer.create(element).toJSON(), {\n plugins: [ReactTestComponent],\n printFunctionName: false,\n});\n/*\n\n Hello World\n\n*/\n```\n\n## Usage in Jest\n\nFor snapshot tests, Jest uses `pretty-format` with options that include some of its built-in plugins. For this purpose, plugins are also known as **snapshot serializers**.\n\nTo serialize application-specific data types, you can add modules to `devDependencies` of a project, and then:\n\nIn an **individual** test file, you can add a module as follows. It precedes any modules from Jest configuration.\n\n```js\nimport serializer from 'my-serializer-module';\nexpect.addSnapshotSerializer(serializer);\n\n// tests which have `expect(value).toMatchSnapshot()` assertions\n```\n\nFor **all** test files, you can specify modules in Jest configuration. They precede built-in plugins for React, HTML, and Immutable.js data types. For example, in a `package.json` file:\n\n```json\n{\n \"jest\": {\n \"snapshotSerializers\": [\"my-serializer-module\"]\n }\n}\n```\n\n## Writing plugins\n\nA plugin is a JavaScript object.\n\nIf `options` has a `plugins` array: for the first plugin whose `test(val)` method returns a truthy value, then `prettyFormat(val, options)` returns the result from either:\n\n- `serialize(val, …)` method of the **improved** interface (available in **version 21** or later)\n- `print(val, …)` method of the **original** interface (if plugin does not have `serialize` method)\n\n### test\n\nWrite `test` so it can receive `val` argument of any type. To serialize **objects** which have certain properties, then a guarded expression like `val != null && …` or more concise `val && …` prevents the following errors:\n\n- `TypeError: Cannot read property 'whatever' of null`\n- `TypeError: Cannot read property 'whatever' of undefined`\n\nFor example, `test` method of built-in `ReactElement` plugin:\n\n```js\nconst elementSymbol = Symbol.for('react.element');\nconst test = val => val && val.$$typeof === elementSymbol;\n```\n\nPay attention to efficiency in `test` because `pretty-format` calls it often.\n\n### serialize\n\nThe **improved** interface is available in **version 21** or later.\n\nWrite `serialize` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- unchanging `config` object: derived from `options`\n- current `indentation` string: concatenate to `indent` from `config`\n- current `depth` number: compare to `maxDepth` from `config`\n- current `refs` array: find circular references in objects\n- `printer` callback function: serialize children\n\n### config\n\n\n| key | type | description |\n| :------------------ | :--------------- | :-------------------------------------------------------------------------------------- |\n| `callToJSON` | `boolean` | call `toJSON` method (if it exists) on objects |\n| `compareKeys` | `function\\|null` | compare function used when sorting object keys, `null` can be used to skip over sorting |\n| `colors` | `Object` | escape codes for colors to highlight syntax |\n| `escapeRegex` | `boolean` | escape special characters in regular expressions |\n| `escapeString` | `boolean` | escape special characters in strings |\n| `indent` | `string` | spaces in each level of indentation |\n| `maxDepth` | `number` | levels to print in arrays, objects, elements, and so on |\n| `min` | `boolean` | minimize added space: no indentation nor line breaks |\n| `plugins` | `array` | plugins to serialize application-specific data types |\n| `printFunctionName` | `boolean` | include or omit the name of a function |\n| `spacingInner` | `string` | spacing to separate items in a list |\n| `spacingOuter` | `string` | spacing to enclose a list of items |\n\nEach property of `colors` in `config` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\nSome properties in `config` are derived from `min` in `options`:\n\n- `spacingInner` and `spacingOuter` are **newline** if `min` is `false`\n- `spacingInner` is **space** and `spacingOuter` is **empty string** if `min` is `true`\n\n### Example of serialize and test\n\nThis plugin is a pattern you can apply to serialize composite data types. Side note: `pretty-format` does not need a plugin to serialize arrays.\n\n```js\n// We reused more code when we factored out a function for child items\n// that is independent of depth, name, and enclosing punctuation (see below).\nconst SEPARATOR = ',';\nfunction serializeItems(items, config, indentation, depth, refs, printer) {\n if (items.length === 0) {\n return '';\n }\n const indentationItems = indentation + config.indent;\n return (\n config.spacingOuter +\n items\n .map(\n item =>\n indentationItems +\n printer(item, config, indentationItems, depth, refs), // callback\n )\n .join(SEPARATOR + config.spacingInner) +\n (config.min ? '' : SEPARATOR) + // following the last item\n config.spacingOuter +\n indentation\n );\n}\n\nconst plugin = {\n test(val) {\n return Array.isArray(val);\n },\n serialize(array, config, indentation, depth, refs, printer) {\n const name = array.constructor.name;\n return ++depth > config.maxDepth\n ? `[${name}]`\n : `${config.min ? '' : `${name} `}[${serializeItems(\n array,\n config,\n indentation,\n depth,\n refs,\n printer,\n )}]`;\n },\n};\n```\n\n```js\nconst val = {\n filter: 'completed',\n items: [\n {\n text: 'Write test',\n completed: true,\n },\n {\n text: 'Write serialize',\n completed: true,\n },\n ],\n};\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n indent: 4,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": Array [\n Object {\n \"completed\": true,\n \"text\": \"Write test\",\n },\n Object {\n \"completed\": true,\n \"text\": \"Write serialize\",\n },\n ],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n maxDepth: 1,\n plugins: [plugin],\n }),\n);\n/*\nObject {\n \"filter\": \"completed\",\n \"items\": [Array],\n}\n*/\n```\n\n```js\nconsole.log(\n prettyFormat(val, {\n min: true,\n plugins: [plugin],\n }),\n);\n/*\n{\"filter\": \"completed\", \"items\": [{\"completed\": true, \"text\": \"Write test\"}, {\"completed\": true, \"text\": \"Write serialize\"}]}\n*/\n```\n\n### print\n\nThe **original** interface is adequate for plugins:\n\n- that **do not** depend on options other than `highlight` or `min`\n- that **do not** depend on `depth` or `refs` in recursive traversal, and\n- if values either\n - do **not** require indentation, or\n - do **not** occur as children of JavaScript data structures (for example, array)\n\nWrite `print` to return a string, given the arguments:\n\n- `val` which “passed the test”\n- current `printer(valChild)` callback function: serialize children\n- current `indenter(lines)` callback function: indent lines at the next level\n- unchanging `config` object: derived from `options`\n- unchanging `colors` object: derived from `options`\n\nThe 3 properties of `config` are `min` in `options` and:\n\n- `spacing` and `edgeSpacing` are **newline** if `min` is `false`\n- `spacing` is **space** and `edgeSpacing` is **empty string** if `min` is `true`\n\nEach property of `colors` corresponds to a property of `theme` in `options`:\n\n- the key is the same (for example, `tag`)\n- the value in `colors` is a object with `open` and `close` properties whose values are escape codes from [ansi-styles](https://github.com/chalk/ansi-styles) for the color value in `theme` (for example, `'cyan'`)\n\n### Example of print and test\n\nThis plugin prints functions with the **number of named arguments** excluding rest argument.\n\n```js\nconst plugin = {\n print(val) {\n return `[Function ${val.name || 'anonymous'} ${val.length}]`;\n },\n test(val) {\n return typeof val === 'function';\n },\n};\n```\n\n```js\nconst val = {\n onClick(event) {},\n render() {},\n};\n\nprettyFormat(val, {\n plugins: [plugin],\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val);\n/*\nObject {\n \"onClick\": [Function onClick],\n \"render\": [Function render],\n}\n*/\n```\n\nThis plugin **ignores** the `printFunctionName` option. That limitation of the original `print` interface is a reason to use the improved `serialize` interface, described above.\n\n```js\nprettyFormat(val, {\n plugins: [pluginOld],\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function onClick 1],\n \"render\": [Function render 0],\n}\n*/\n\nprettyFormat(val, {\n printFunctionName: false,\n});\n/*\nObject {\n \"onClick\": [Function],\n \"render\": [Function],\n}\n*/\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/jestjs/jest/issues"},"homepage":"https://github.com/jestjs/jest#readme","_id":"pretty-format@30.0.0-alpha.3","_nodeVersion":"20.11.1","_npmVersion":"lerna/3.2.1/node@v20.11.1+arm64 (darwin)","dist":{"integrity":"sha512-b1mhTF/vbYJaXOdRY0nFMwzHHpWCs0QNYJA5ImcOpQ99QZqCHqU8C+lbGoWwC3X9QEjAYJ+N5+Vmc/MXbXCZDA==","shasum":"c0e7dfd029f81681a59ea8c82e5dcec823c42951","tarball":"http://localhost:4545/npm/registry/pretty-format/pretty-format-30.0.0-alpha.3.tgz","fileCount":6,"unpackedSize":60184,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC80j+EWUUuijHvZkkUtUbYm4dRduCSbK0DqebTGG9AiAIhAIqKHHGTqdbYKnVXOu5oS1w/ago+SG/ILF2KMg4j2kWz"}]},"_npmUser":{"name":"simenb","email":"sbekkhus91@gmail.com"},"directories":{},"maintainers":[{"name":"simenb","email":"sbekkhus91@gmail.com"},{"name":"cpojer","email":"christoph.pojer@gmail.com"},{"name":"aaronabramov","email":"aaron@abramov.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pretty-format_30.0.0-alpha.3_1708427337839_0.24680493026514982"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"email":"sbekkhus91@gmail.com","name":"simenb"},{"email":"christoph.pojer@gmail.com","name":"cpojer"},{"email":"aaron@abramov.io","name":"aaronabramov"},{"email":"operations@openjsf.org","name":"openjs-operations"}],"time":{"modified":"2024-02-26T15:59:07.828Z","created":"2015-03-08T04:52:08.223Z","1.0.0":"2015-03-08T04:52:08.223Z","1.1.0":"2015-03-15T23:34:23.843Z","1.1.1":"2015-03-16T17:00:42.800Z","1.2.0":"2015-03-16T17:39:03.466Z","2.0.0":"2016-06-01T22:02:28.012Z","2.1.0":"2016-06-01T23:52:20.958Z","3.0.0":"2016-06-13T20:33:54.044Z","3.1.0":"2016-06-14T04:31:59.244Z","3.2.0":"2016-06-15T03:23:45.115Z","3.3.0":"2016-06-15T06:31:28.366Z","3.3.1":"2016-06-21T17:41:02.344Z","3.3.2":"2016-06-22T21:26:05.428Z","3.4.0":"2016-07-02T20:42:16.060Z","3.4.1":"2016-07-04T17:49:21.976Z","3.4.2":"2016-07-06T01:44:16.253Z","3.4.3":"2016-07-06T06:28:01.288Z","3.5.0":"2016-07-08T08:29:23.317Z","3.5.1":"2016-08-01T17:06:25.371Z","3.5.2":"2016-08-04T02:53:37.087Z","3.5.3":"2016-08-11T00:23:51.193Z","3.6.0":"2016-08-17T20:20:08.951Z","3.7.0":"2016-09-01T15:16:07.274Z","3.8.0":"2016-09-11T01:43:26.665Z","4.0.0":"2016-09-11T02:02:31.572Z","4.1.0":"2016-09-20T11:22:51.213Z","4.2.0":"2016-09-21T04:23:39.611Z","4.2.1":"2016-09-21T06:36:48.110Z","4.2.2":"2016-11-01T23:01:44.066Z","4.2.3":"2016-11-10T18:14:42.939Z","4.3.0":"2016-11-18T07:08:21.917Z","4.3.1":"2016-11-18T14:39:30.721Z","18.0.0":"2016-12-15T11:24:39.904Z","18.1.0":"2016-12-29T01:47:37.936Z","18.5.0-alpha.7da3df39":"2017-02-17T16:57:58.225Z","19.0.0":"2017-02-21T09:30:33.083Z","19.1.0-alpha.eed82034":"2017-03-17T00:41:24.175Z","19.2.0-alpha.993e64af":"2017-05-04T15:37:41.927Z","19.3.0-alpha.85402254":"2017-05-05T11:48:22.883Z","20.0.0":"2017-05-06T12:32:36.938Z","20.0.1":"2017-05-11T10:50:08.654Z","20.0.2":"2017-05-17T10:50:23.917Z","20.0.3":"2017-05-17T10:57:13.531Z","20.1.0-alpha.1":"2017-06-28T10:16:21.675Z","20.1.0-alpha.2":"2017-06-29T16:36:48.331Z","20.1.0-alpha.3":"2017-06-30T14:20:54.944Z","20.1.0-beta.1":"2017-07-13T10:33:43.286Z","20.1.0-chi.1":"2017-07-14T10:25:05.727Z","20.1.0-delta.1":"2017-07-18T08:46:55.252Z","20.1.0-delta.2":"2017-07-19T12:56:44.830Z","20.1.0-delta.3":"2017-07-25T22:12:26.282Z","20.1.0-delta.4":"2017-07-27T17:19:08.800Z","20.1.0-delta.5":"2017-08-01T16:33:37.018Z","20.1.0-echo.1":"2017-08-08T16:49:56.294Z","21.0.0-alpha.1":"2017-08-11T10:14:06.327Z","21.0.0-alpha.2":"2017-08-21T22:06:49.160Z","21.0.0-beta.1":"2017-08-24T21:26:51.250Z","21.0.0":"2017-09-04T15:01:55.963Z","21.0.2":"2017-09-08T14:19:28.371Z","21.1.0":"2017-09-14T01:50:14.649Z","21.2.0":"2017-09-26T20:22:19.365Z","21.2.1":"2017-09-27T22:15:03.745Z","21.3.0-alpha.1e3ee68e":"2017-09-28T14:20:41.836Z","21.3.0-alpha.eff7a1cf":"2017-10-01T16:46:50.733Z","21.3.0-beta.1":"2017-10-04T10:48:39.647Z","21.3.0-beta.2":"2017-10-13T09:54:06.677Z","21.3.0-beta.3":"2017-10-25T19:34:06.251Z","21.3.0-beta.4":"2017-10-26T13:26:59.176Z","21.3.0-beta.5":"2017-11-02T13:17:32.386Z","21.3.0-beta.6":"2017-11-03T16:21:36.255Z","21.3.0-beta.7":"2017-11-06T09:39:50.075Z","21.3.0-beta.8":"2017-11-07T17:43:44.016Z","21.3.0-beta.9":"2017-11-22T13:17:33.949Z","21.3.0-beta.10":"2017-11-25T12:39:25.671Z","21.3.0-beta.11":"2017-11-29T14:31:21.873Z","21.3.0-beta.12":"2017-12-05T18:48:35.102Z","21.3.0-beta.13":"2017-12-06T14:37:08.966Z","21.3.0-beta.14":"2017-12-12T10:52:36.520Z","21.3.0-beta.15":"2017-12-15T13:27:40.801Z","22.0.0":"2017-12-18T11:03:25.836Z","22.0.1":"2017-12-18T20:29:25.187Z","22.0.2":"2017-12-19T13:53:04.651Z","22.0.3":"2017-12-19T14:58:56.170Z","22.0.5":"2018-01-09T15:09:54.203Z","22.0.6":"2018-01-11T09:46:46.730Z","22.1.0":"2018-01-15T11:57:17.363Z","22.4.0":"2018-02-20T12:03:31.362Z","22.4.3":"2018-03-21T16:08:10.760Z","23.0.0-alpha.2":"2018-03-26T10:40:47.317Z","23.0.0-alpha.4":"2018-03-26T12:31:41.960Z","23.0.0-alpha.5":"2018-04-10T19:18:20.898Z","23.0.0-alpha.5r":"2018-04-11T05:52:49.951Z","23.0.0-alpha.6r":"2018-04-12T07:01:35.462Z","23.0.0-alpha.7":"2018-04-17T18:55:20.032Z","23.0.0-beta.0":"2018-04-20T10:10:47.213Z","23.0.0-beta.1":"2018-04-21T15:44:24.721Z","23.0.0-beta.2":"2018-04-26T21:17:37.807Z","23.0.0-alpha.3r":"2018-04-30T13:10:13.056Z","23.0.0-beta.3r":"2018-04-30T13:14:55.844Z","23.0.0-charlie.0":"2018-05-02T10:56:23.810Z","23.0.0-charlie.1":"2018-05-03T12:10:15.961Z","23.0.0-charlie.2":"2018-05-15T09:51:27.346Z","23.0.0-charlie.3":"2018-05-22T14:59:01.270Z","23.0.0-charlie.4":"2018-05-23T10:42:26.200Z","23.0.0":"2018-05-24T17:26:26.517Z","23.0.1":"2018-05-27T15:30:57.217Z","23.2.0":"2018-06-25T14:05:16.960Z","23.5.0":"2018-08-10T13:51:42.861Z","23.6.0":"2018-09-10T12:42:53.440Z","24.0.0-alpha.0":"2018-10-19T12:12:46.155Z","24.0.0-alpha.1":"2018-10-22T15:35:49.372Z","24.0.0-alpha.2":"2018-10-25T10:51:19.959Z","24.0.0-alpha.4":"2018-10-26T16:33:15.401Z","24.0.0-alpha.5":"2018-11-09T13:12:45.857Z","24.0.0-alpha.6":"2018-11-09T17:49:42.827Z","24.0.0-alpha.7":"2018-12-11T16:07:56.656Z","24.0.0-alpha.8":"2018-12-13T19:47:52.691Z","24.0.0-alpha.9":"2018-12-19T14:25:58.481Z","24.0.0-alpha.10":"2019-01-09T17:04:31.057Z","24.0.0-alpha.11":"2019-01-10T18:35:07.255Z","24.0.0-alpha.12":"2019-01-11T15:01:19.314Z","24.0.0-alpha.13":"2019-01-23T15:15:29.108Z","24.0.0-alpha.15":"2019-01-24T17:52:32.939Z","24.0.0-alpha.16":"2019-01-25T13:42:04.038Z","24.0.0":"2019-01-25T15:04:58.929Z","24.2.0-alpha.0":"2019-03-05T14:46:42.860Z","24.3.0":"2019-03-07T12:59:39.649Z","24.3.1":"2019-03-07T23:12:20.542Z","24.4.0":"2019-03-11T14:57:49.478Z","24.5.0":"2019-03-12T16:36:27.199Z","24.6.0":"2019-04-01T22:26:22.948Z","24.7.0":"2019-04-03T03:55:18.087Z","24.8.0":"2019-05-05T02:02:21.602Z","24.9.0":"2019-08-16T05:55:55.008Z","25.0.0":"2019-08-22T03:24:00.871Z","25.1.0":"2020-01-22T00:59:53.413Z","25.2.0-alpha.86":"2020-03-25T17:16:27.944Z","25.2.0":"2020-03-25T17:58:03.550Z","25.2.1-alpha.1":"2020-03-26T07:54:21.171Z","25.2.1-alpha.2":"2020-03-26T08:10:30.666Z","25.2.1":"2020-03-26T09:01:11.603Z","25.2.3":"2020-03-26T20:24:46.402Z","25.2.5":"2020-04-02T10:23:04.741Z","25.2.6":"2020-04-02T10:29:16.387Z","25.3.0":"2020-04-08T13:21:05.759Z","25.4.0":"2020-04-19T21:50:24.892Z","25.5.0":"2020-04-28T19:45:21.166Z","26.0.0-alpha.0":"2020-05-02T12:13:00.417Z","26.0.0-alpha.1":"2020-05-03T18:48:01.476Z","26.0.0-alpha.2":"2020-05-04T16:05:26.950Z","26.0.0":"2020-05-04T17:53:05.220Z","26.0.1-alpha.0":"2020-05-04T22:15:57.138Z","26.0.1":"2020-05-05T10:40:44.935Z","26.1.0":"2020-06-23T15:15:10.868Z","26.2.0":"2020-07-30T10:11:42.234Z","26.3.0":"2020-08-10T11:31:48.319Z","26.4.0":"2020-08-12T21:00:17.956Z","26.4.2":"2020-08-22T12:09:56.668Z","26.5.0":"2020-10-05T09:28:15.009Z","26.5.2":"2020-10-06T10:52:44.666Z","26.6.0":"2020-10-19T11:58:37.794Z","26.6.1":"2020-10-23T09:06:02.003Z","26.6.2":"2020-11-02T12:51:22.883Z","27.0.0-next.0":"2020-12-05T17:25:14.316Z","27.0.0-next.1":"2020-12-07T12:43:21.571Z","27.0.0-next.3":"2021-02-18T22:09:48.656Z","27.0.0-next.5":"2021-03-15T13:03:17.263Z","27.0.0-next.6":"2021-03-25T19:39:57.254Z","27.0.0-next.7":"2021-04-02T13:47:54.131Z","27.0.0-next.8":"2021-04-12T22:42:29.294Z","27.0.0-next.9":"2021-05-04T06:25:02.043Z","27.0.0-next.10":"2021-05-20T14:11:16.610Z","27.0.0-next.11":"2021-05-20T22:28:42.411Z","27.0.0":"2021-05-25T08:15:04.353Z","27.0.1":"2021-05-25T10:06:29.809Z","27.0.2":"2021-05-29T12:07:12.776Z","27.0.6":"2021-06-28T17:05:35.991Z","27.1.0":"2021-08-27T09:59:36.659Z","27.1.1":"2021-09-08T10:12:11.097Z","27.2.0":"2021-09-13T08:06:34.660Z","27.2.2":"2021-09-25T13:35:07.145Z","27.2.3":"2021-09-28T10:11:21.050Z","27.2.4":"2021-09-29T14:04:47.132Z","27.2.5":"2021-10-08T13:39:19.739Z","27.3.0":"2021-10-17T18:34:46.048Z","27.3.1":"2021-10-19T06:57:31.811Z","27.4.0":"2021-11-29T13:37:00.044Z","27.4.1":"2021-11-30T08:37:06.945Z","27.4.2":"2021-11-30T11:53:38.624Z","27.4.6":"2022-01-04T23:03:31.715Z","27.5.0":"2022-02-05T09:59:18.349Z","27.5.1":"2022-02-08T10:52:12.132Z","28.0.0-alpha.0":"2022-02-10T18:17:27.390Z","28.0.0-alpha.1":"2022-02-15T21:26:54.273Z","28.0.0-alpha.2":"2022-02-16T18:12:00.300Z","28.0.0-alpha.3":"2022-02-17T15:42:21.247Z","28.0.0-alpha.4":"2022-02-22T12:13:54.534Z","28.0.0-alpha.5":"2022-02-24T20:57:18.080Z","28.0.0-alpha.6":"2022-03-01T08:32:23.240Z","28.0.0-alpha.7":"2022-03-06T10:02:39.841Z","28.0.0-alpha.8":"2022-04-05T14:59:39.196Z","28.0.0-alpha.9":"2022-04-19T10:59:14.192Z","28.0.0":"2022-04-25T12:08:06.808Z","28.0.1":"2022-04-26T10:02:32.450Z","28.0.2":"2022-04-27T07:44:01.836Z","28.1.0":"2022-05-06T10:48:53.457Z","28.1.1":"2022-06-07T06:09:35.564Z","28.1.3":"2022-07-13T14:12:27.126Z","29.0.0-alpha.0":"2022-07-17T22:07:06.929Z","29.0.0-alpha.1":"2022-08-04T08:23:28.748Z","29.0.0-alpha.3":"2022-08-07T13:41:36.470Z","29.0.0-alpha.4":"2022-08-08T13:05:34.955Z","29.0.0-alpha.6":"2022-08-19T13:57:48.480Z","29.0.0":"2022-08-25T12:33:28.516Z","29.0.1":"2022-08-26T13:34:42.288Z","29.0.2":"2022-09-03T10:48:19.835Z","29.0.3":"2022-09-10T14:41:38.462Z","29.1.0":"2022-09-28T07:37:38.636Z","29.1.2":"2022-09-30T07:22:44.847Z","29.2.0":"2022-10-14T09:13:46.533Z","29.2.1":"2022-10-18T16:00:11.894Z","29.3.1":"2022-11-08T22:56:21.978Z","29.4.0":"2023-01-24T10:55:49.590Z","29.4.1":"2023-01-26T15:08:35.218Z","29.4.2":"2023-02-07T13:45:25.957Z","29.4.3":"2023-02-15T11:57:20.559Z","29.5.0":"2023-03-06T13:33:28.482Z","29.6.0":"2023-07-04T15:25:45.277Z","29.6.1":"2023-07-06T14:18:17.695Z","29.6.2":"2023-07-27T09:21:29.464Z","29.6.3":"2023-08-21T12:39:08.602Z","29.7.0":"2023-09-12T06:43:41.906Z","30.0.0-alpha.1":"2023-10-30T13:33:09.075Z","30.0.0-alpha.2":"2023-11-16T09:28:19.237Z","30.0.0-alpha.3":"2024-02-20T11:08:58.033Z"},"repository":{"type":"git","url":"git+https://github.com/jestjs/jest.git","directory":"packages/pretty-format"},"author":{"name":"James Kyle","email":"me@thejameskyle.com"},"license":"MIT","readmeFilename":"","users":{"chocolateboy":true,"robmcguinness":true,"capaj":true,"samhagman":true,"tribou":true,"program247365":true,"alexxnica":true,"vaju":true,"styfle":true,"ryanlittle":true,"willwolffmyren":true},"homepage":"https://github.com/jestjs/jest#readme","bugs":{"url":"https://github.com/jestjs/jest/issues"}} \ No newline at end of file diff --git a/tests/testdata/publish/unsupported_jsx_tsx/foo.jsx b/tests/testdata/publish/unsupported_jsx_tsx/foo.jsx new file mode 100644 index 0000000000..021c2d49ea --- /dev/null +++ b/tests/testdata/publish/unsupported_jsx_tsx/foo.jsx @@ -0,0 +1,5 @@ +import { renderToString } from "npm:preact-render-to-string"; + +export default function render() { + return renderToString(
foo.tsx
); +} diff --git a/tests/testdata/publish/unsupported_jsx_tsx/foo.tsx b/tests/testdata/publish/unsupported_jsx_tsx/foo.tsx new file mode 100644 index 0000000000..021c2d49ea --- /dev/null +++ b/tests/testdata/publish/unsupported_jsx_tsx/foo.tsx @@ -0,0 +1,5 @@ +import { renderToString } from "npm:preact-render-to-string"; + +export default function render() { + return renderToString(
foo.tsx
); +} diff --git a/tests/testdata/publish/unsupported_jsx_tsx/jsr.jsonc b/tests/testdata/publish/unsupported_jsx_tsx/jsr.jsonc new file mode 100644 index 0000000000..7aea088428 --- /dev/null +++ b/tests/testdata/publish/unsupported_jsx_tsx/jsr.jsonc @@ -0,0 +1,11 @@ +{ + "name": "@foo/bar", + "version": "1.0.0", + "exports": { + ".": "./mod.ts" + }, + "compilerOptions": { + "jsx": "react-jsx", + "jsxImportSource": "npm:preact" + } +} diff --git a/tests/testdata/publish/unsupported_jsx_tsx/mod.out b/tests/testdata/publish/unsupported_jsx_tsx/mod.out new file mode 100644 index 0000000000..5f085fb339 --- /dev/null +++ b/tests/testdata/publish/unsupported_jsx_tsx/mod.out @@ -0,0 +1,17 @@ +[WILDCARD] +Check file:///[WILDCARD]/publish/unsupported_jsx_tsx/mod.ts +Checking for slow types in the public API... +Check file:///[WILDCARD]/publish/unsupported_jsx_tsx/mod.ts +warning[unsupported-jsx-tsx]: JSX and TSX files are currently not supported + --> [WILDCARD]foo.jsx + + info: follow https://github.com/jsr-io/jsr/issues/24 for updates + +warning[unsupported-jsx-tsx]: JSX and TSX files are currently not supported + --> [WILDCARD]foo.tsx + + info: follow https://github.com/jsr-io/jsr/issues/24 for updates + +Publishing @foo/bar@1.0.0 ... +Successfully published @foo/bar@1.0.0 +Visit http://127.0.0.1:4250/@foo/bar@1.0.0 for details diff --git a/tests/testdata/publish/unsupported_jsx_tsx/mod.ts b/tests/testdata/publish/unsupported_jsx_tsx/mod.ts new file mode 100644 index 0000000000..4631a829d9 --- /dev/null +++ b/tests/testdata/publish/unsupported_jsx_tsx/mod.ts @@ -0,0 +1,7 @@ +import fooTsx from "./foo.tsx"; +import fooJsx from "./foo.jsx"; + +export function renderTsxJsx() { + console.log(fooTsx()); + console.log(fooJsx()); +}