From 63f7731a17663b6689534c02bcdae9814e1e995c Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Mon, 18 Jul 2022 17:28:37 +0200 Subject: [PATCH 01/14] chore: update react-native to 0.68.2 (#1009) * chore: update react-native to 0.68.2 * chore: update workflow node version to 14 * chore: fix flow * chote: increase jest timeout --- .circleci/config.yml | 2 +- .flowconfig | 6 - package.json | 8 +- .../__snapshots__/render.test.tsx.snap | 4 +- yarn.lock | 1359 +++++++++++------ 5 files changed, 858 insertions(+), 521 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3513063f8..553eb356a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,7 +12,7 @@ aliases: defaults: &defaults docker: - - image: circleci/node:12 + - image: circleci/node:14 working_directory: ~/react-native-testing-library jobs: diff --git a/.flowconfig b/.flowconfig index c60686a31..0dbfa8c63 100644 --- a/.flowconfig +++ b/.flowconfig @@ -31,12 +31,6 @@ flow-typed/ server.max_workers=4 emoji=true -esproposal.optional_chaining=enable -esproposal.nullish_coalescing=enable - -well_formed_exports=true -types_first=true - module.file_ext=.js module.file_ext=.json module.file_ext=.ios.js diff --git a/package.json b/package.json index 91ed2b5cf..675d67bcb 100644 --- a/package.json +++ b/package.json @@ -46,12 +46,12 @@ "cp-cli": "^2.0.0", "dedent": "^0.7.0", "del-cli": "^3.0.1", - "eslint": "^7.0.0", - "flow-bin": "^0.141.0", + "eslint": "^7.32.0", + "flow-bin": "~0.170.0", "flow-copy-source": "^2.0.9", "jest": "^27.0.0", "react": "^17.0.2", - "react-native": "^0.66.0", + "react-native": "~0.68.2", "react-test-renderer": "^17.0.2", "release-it": "^14.0.3", "strip-ansi": "^6.0.0", @@ -87,7 +87,7 @@ "testPathIgnorePatterns": [ "timerUtils" ], - "testTimeout": 30000, + "testTimeout": 60000, "transformIgnorePatterns": [ "/node_modules/(?!(@react-native|react-native)/).*/" ] diff --git a/src/__tests__/__snapshots__/render.test.tsx.snap b/src/__tests__/__snapshots__/render.test.tsx.snap index d2b7d4b39..00701750a 100644 --- a/src/__tests__/__snapshots__/render.test.tsx.snap +++ b/src/__tests__/__snapshots__/render.test.tsx.snap @@ -32,7 +32,6 @@ exports[`debug 1`] = ` accessible={true} collapsable={false} focusable={true} - nativeID=\\"animatedComponent\\" onClick={[Function onClick]} onResponderGrant={[Function onResponderGrant]} onResponderMove={[Function onResponderMove]} @@ -96,6 +95,7 @@ exports[`debug changing component: bananaFresh button message should now be "fre /> =0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= - ora@5.4.1, ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -8046,13 +8389,18 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.0, pirates@^4.0.1: +pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" +pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -8074,15 +8422,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -plist@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" - integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== - dependencies: - base64-js "^1.2.3" - xmlbuilder "^9.0.7" - xmldom "0.1.x" - plist@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.4.tgz#a62df837e3aed2bb3b735899d510c4f186019cbe" @@ -8091,6 +8430,14 @@ plist@^3.0.2: base64-js "^1.5.1" xmlbuilder "^9.0.7" +plist@^3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" + integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== + dependencies: + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -8193,6 +8540,15 @@ prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" +prop-types@*: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -8272,10 +8628,10 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-devtools-core@^4.13.0: - version "4.20.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.20.0.tgz#49640f374bcf541cd86410d86c2cb07392005b33" - integrity sha512-85889TaQpU4HImySgOjVwsGE1vkS9dgEjtruRHutnXlBN3IZN8lDRuqRBLmhFkS50BEmfpTR28qV7bHAqwHooA== +react-devtools-core@^4.23.0: + version "4.25.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.25.0.tgz#78b11a2c9f81dd9ebff3745ab4ee2147cc96c12a" + integrity sha512-iewRrnu0ZnmfL+jJayKphXj04CFh6i3ezVnpCtcnZbTPSQgN09XqHAzXbKbqNDl7aTg9QLNkQRP6M3DvdrinWA== dependencies: shell-quote "^1.6.1" ws "^7" @@ -8285,54 +8641,61 @@ react-devtools-core@^4.13.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-native-codegen@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.7.tgz#86651c5c5fec67a8077ef7f4e36f7ed459043e14" - integrity sha512-dwNgR8zJ3ALr480QnAmpTiqvFo+rDtq6V5oCggKhYFlRjzOmVSFn3YD41u8ltvKS5G2nQ8gCs2vReFFnRGLYng== +react-native-codegen@^0.0.17: + version "0.0.17" + resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.17.tgz#83fb814d94061cbd46667f510d2ddba35ffb50ac" + integrity sha512-7GIEUmAemH9uWwB6iYXNNsPoPgH06pxzGRmdBzK98TgFBdYJZ7CBuZFPMe4jmHQTPOkQazKZ/w5O6/71JBixmw== dependencies: + "@babel/parser" "^7.14.0" flow-parser "^0.121.0" - jscodeshift "^0.11.0" + jscodeshift "^0.13.1" nullthrows "^1.1.1" -react-native@^0.66.0: - version "0.66.0" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.66.0.tgz#99bdd83a9a612a71b94242767989d666d445b007" - integrity sha512-m26TKwzsfHVdZ1hDG+7mZ4M4ftxFFZrhtiT0OXuwfBzmNtB3xhsJtYszPeizw33c9YNp8rvehKT3c4ldDCW6kA== +react-native-gradle-plugin@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz#b61a9234ad2f61430937911003cddd7e15c72b45" + integrity sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg== + +react-native@~0.68.2: + version "0.68.2" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.68.2.tgz#07547cd31bb9335a7fa4135cfbdc24e067142585" + integrity sha512-qNMz+mdIirCEmlrhapAtAG+SWVx6MAiSfCbFNhfHqiqu1xw1OKXdzIrjaBEPihRC2pcORCoCHduHGQe/Pz9Yuw== dependencies: "@jest/create-cache-key-function" "^27.0.1" - "@react-native-community/cli" "^6.0.0" - "@react-native-community/cli-platform-android" "^6.0.0" - "@react-native-community/cli-platform-ios" "^6.0.0" + "@react-native-community/cli" "^7.0.3" + "@react-native-community/cli-platform-android" "^7.0.1" + "@react-native-community/cli-platform-ios" "^7.0.1" "@react-native/assets" "1.0.0" - "@react-native/normalize-color" "1.0.0" + "@react-native/normalize-color" "2.0.0" "@react-native/polyfills" "2.0.0" abort-controller "^3.0.0" anser "^1.4.9" base64-js "^1.1.2" + deprecated-react-native-prop-types "^2.3.0" event-target-shim "^5.0.1" - hermes-engine "~0.9.0" + hermes-engine "~0.11.0" invariant "^2.2.4" jsc-android "^250230.2.1" - metro-babel-register "0.66.2" - metro-react-native-babel-transformer "0.66.2" - metro-runtime "0.66.2" - metro-source-map "0.66.2" + metro-react-native-babel-transformer "0.67.0" + metro-runtime "0.67.0" + metro-source-map "0.67.0" nullthrows "^1.1.1" pretty-format "^26.5.2" promise "^8.0.3" - prop-types "^15.7.2" - react-devtools-core "^4.13.0" - react-native-codegen "^0.0.7" + react-devtools-core "^4.23.0" + react-native-codegen "^0.0.17" + react-native-gradle-plugin "^0.0.6" react-refresh "^0.4.0" + react-shallow-renderer "16.14.1" regenerator-runtime "^0.13.2" scheduler "^0.20.2" stacktrace-parser "^0.1.3" - use-subscription "^1.0.0" + use-subscription ">=1.0.0 <1.6.0" whatwg-fetch "^3.0.0" ws "^6.1.4" @@ -8341,7 +8704,7 @@ react-refresh@^0.4.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== -react-shallow-renderer@^16.13.1: +react-shallow-renderer@16.14.1, react-shallow-renderer@^16.13.1: version "16.14.1" resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz#bf0d02df8a519a558fd9b8215442efa5c840e124" integrity sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg== @@ -8478,10 +8841,10 @@ readline@^1.3.0: resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" integrity sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw= -recast@^0.20.3: - version "0.20.4" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" - integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: ast-types "0.14.2" esprima "~4.0.0" @@ -8637,11 +9000,6 @@ release-it@^14.0.3: yaml "1.10.2" yargs-parser "20.2.9" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -8798,11 +9156,6 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - run-async@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" @@ -8844,21 +9197,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - sax@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -8962,6 +9300,13 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -8986,21 +9331,16 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +shell-quote@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + shelljs@0.8.4, shelljs@^0.8.3: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" @@ -9023,14 +9363,14 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -simple-plist@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.1.tgz#54367ca28bc5996a982c325c1c4a4c1a05f4047c" - integrity sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg== +simple-plist@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017" + integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw== dependencies: - bplist-creator "0.0.8" - bplist-parser "0.2.0" - plist "^3.0.1" + bplist-creator "0.1.0" + bplist-parser "0.3.1" + plist "^3.0.5" sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" @@ -9225,10 +9565,10 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-buffers@~2.2.0: +stream-buffers@2.2.x: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" - integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= + integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== string-length@^4.0.1: version "4.0.1" @@ -9502,7 +9842,7 @@ temp@0.8.3: os-tmpdir "^1.0.0" rimraf "~2.2.6" -temp@^0.8.1: +temp@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== @@ -9789,11 +10129,6 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.5.tgz#5d71d6dbba64cf441f32929b1efce7365bb4f113" integrity sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw== -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -9864,6 +10199,14 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +update-browserslist-db@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-notifier@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" @@ -9908,7 +10251,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -use-subscription@^1.0.0: +"use-subscription@>=1.0.0 <1.6.0": version "1.5.1" resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== @@ -9940,6 +10283,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -9986,7 +10334,7 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7, walker@~1.0.5: +walker@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -10145,14 +10493,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^1.1.0, ws@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" - integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== - dependencies: - options ">=0.0.5" - ultron "1.0.x" - ws@^6.1.4: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -10170,13 +10510,18 @@ ws@^7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== -xcode@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" - integrity sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ== +ws@^7.5.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xcode@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" + integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== dependencies: - simple-plist "^1.0.0" - uuid "^3.3.2" + simple-plist "^1.1.0" + uuid "^7.0.3" xdg-basedir@^4.0.0: version "4.0.0" @@ -10188,6 +10533,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" @@ -10205,11 +10555,6 @@ xmldoc@^1.1.2: dependencies: sax "^1.2.1" -xmldom@0.1.x: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== - xregexp@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" From bdd8f75864a00d65d6ae9c22ecd17c733a8be51e Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Mon, 18 Jul 2022 18:14:58 +0200 Subject: [PATCH 02/14] chore: update react-native to 0.69.1 (#1010) * chore: update react-native deps * refactor: split fake timer test to make it pass --- package.json | 6 +- src/__tests__/waitFor.test.tsx | 34 +- yarn.lock | 888 ++++++++++++++++----------------- 3 files changed, 456 insertions(+), 472 deletions(-) diff --git a/package.json b/package.json index 675d67bcb..bdba4d4e2 100644 --- a/package.json +++ b/package.json @@ -50,9 +50,9 @@ "flow-bin": "~0.170.0", "flow-copy-source": "^2.0.9", "jest": "^27.0.0", - "react": "^17.0.2", - "react-native": "~0.68.2", - "react-test-renderer": "^17.0.2", + "react": "^18.0.0", + "react-native": "~0.69.1", + "react-test-renderer": "^18.0.0", "release-it": "^14.0.3", "strip-ansi": "^6.0.0", "typescript": "^4.0.2" diff --git a/src/__tests__/waitFor.test.tsx b/src/__tests__/waitFor.test.tsx index 7350084fe..752cab5dd 100644 --- a/src/__tests__/waitFor.test.tsx +++ b/src/__tests__/waitFor.test.tsx @@ -79,21 +79,31 @@ test('waits for element with custom interval', async () => { expect(mockFn).toHaveBeenCalledTimes(2); }); -test.each([TimerMode.Legacy, TimerMode.Modern])( - 'waits for element until it stops throwing using %s fake timers', - async (fakeTimerType) => { - jest.useFakeTimers(fakeTimerType); - const { getByText, queryByText } = render(); +test('waits for element until it stops throwing using modern fake timers', async () => { + jest.useFakeTimers('modern'); + const { getByText, queryByText } = render(); - fireEvent.press(getByText('Change freshness!')); - expect(queryByText('Fresh')).toBeNull(); + fireEvent.press(getByText('Change freshness!')); + expect(queryByText('Fresh')).toBeNull(); - jest.advanceTimersByTime(300); - const freshBananaText = await waitFor(() => getByText('Fresh')); + jest.advanceTimersByTime(300); + const freshBananaText = await waitFor(() => getByText('Fresh')); - expect(freshBananaText.props.children).toBe('Fresh'); - } -); + expect(freshBananaText.props.children).toBe('Fresh'); +}); + +test('waits for element until it stops throwing using legacy fake timers', async () => { + jest.useFakeTimers('legacy'); + const { getByText, queryByText } = render(); + + fireEvent.press(getByText('Change freshness!')); + expect(queryByText('Fresh')).toBeNull(); + + jest.advanceTimersByTime(300); + const freshBananaText = await waitFor(() => getByText('Fresh')); + + expect(freshBananaText.props.children).toBe('Fresh'); +}); test.each([TimerMode.Legacy, TimerMode.Modern])( 'waits for assertion until timeout is met with %s fake timers', diff --git a/yarn.lock b/yarn.lock index 33ba9200c..a0ce7d2be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -232,6 +232,14 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + "@babel/helper-define-polyfill-provider@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" @@ -258,7 +266,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== -"@babel/helper-environment-visitor@^7.18.9": +"@babel/helper-environment-visitor@^7.18.6", "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== @@ -503,6 +511,16 @@ "@babel/helper-wrap-function" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-remap-async-to-generator@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" @@ -658,6 +676,16 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-wrap-function@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz#ae1feddc6ebbaa2fd79346b77821c3bd73a39646" + integrity sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helpers@^7.17.8": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" @@ -718,6 +746,16 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-async-generator-functions@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" @@ -1192,6 +1230,14 @@ "@babel/helper-module-transforms" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" @@ -1206,13 +1252,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-object-assign@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.12.1.tgz#9102b06625f60a5443cc292d32b565373665e1e4" - integrity sha512-geUHn4XwHznRAFiuROTy0Hr7bKbpijJCmr1Svt/VNGhpxmp0OrdxURNpWbOAf94nUbL+xj6gbxRVPHWIbRpRoA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" @@ -1282,7 +1321,7 @@ "@babel/helper-annotate-as-pure" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.12.13": +"@babel/plugin-transform-regenerator@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== @@ -1527,6 +1566,13 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" +"@babel/runtime@^7.0.0": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.8.4": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" @@ -2149,46 +2195,73 @@ dependencies: "@octokit/openapi-types" "^11.2.0" -"@react-native-community/cli-debugger-ui@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-7.0.3.tgz#3eeeacc5a43513cbcae56e5e965d77726361bcb4" - integrity sha512-G4SA6jFI0j22o+j+kYP8/7sxzbCDqSp2QiHA/X5E0lsGEd2o9qN2zbIjiFr8b8k+VVAYSUONhoC0+uKuINvmkA== +"@react-native-community/cli-clean@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-8.0.0.tgz#c8fc6e8d6a84c90ca0839d48080a87ad455613db" + integrity sha512-VY/kwyH5xp6oXiB9bcwa+I9W5k6WR/nX3s85FuMW76hSlgG1UVAGL04uZPwYlSmMZuSOSuoXOaIjJ7wAvQMBpg== + dependencies: + "@react-native-community/cli-tools" "^8.0.0" + chalk "^4.1.2" + execa "^1.0.0" + prompts "^2.4.0" + +"@react-native-community/cli-config@^8.0.3": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-8.0.3.tgz#485a7e5e97b8d28fac7f904e9cd5f6d156532f46" + integrity sha512-QhLU6QZywkoO4FzpeEkdoYml0nE9tBwhmOUI/c5iYPOtKhhXiW8kNCLiX96TJDiZonalzptkkNiRZkipdz/8hw== + dependencies: + "@react-native-community/cli-tools" "^8.0.0" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-8.0.0.tgz#98263dc525e65015e2d6392c940114028f87e8e9" + integrity sha512-u2jq06GZwZ9sRERzd9FIgpW6yv4YOW4zz7Ym/B8eSzviLmy3yI/8mxJtvlGW+J8lBsfMcQoqJpqI6Rl1nZy9yQ== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-hermes@^6.3.1": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-6.3.1.tgz#a4c3b4b07a1775f7012baf6d5a0b059da2ffac00" - integrity sha512-+tMJsEsVX0WyylnoFE7uPoMu1aTAChaA62Y32dwWgAa1Fx6YrpPkC9d6wvYSBe9md/4mTtRher+ooBcuov6JHw== +"@react-native-community/cli-doctor@^8.0.3": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-8.0.3.tgz#fd1b345b336157b1ef4941aeda944c6747177bb5" + integrity sha512-ndISZhZqOoeSuQCm5KLwJNkckk14Bqn1N8LHJbC6l4zAyDU0nQRO1IVPoV5uyaANMzMqSNzS6k9N4M0PpcuhIQ== dependencies: - "@react-native-community/cli-platform-android" "^6.3.1" - "@react-native-community/cli-tools" "^6.2.1" + "@react-native-community/cli-config" "^8.0.3" + "@react-native-community/cli-platform-ios" "^8.0.2" + "@react-native-community/cli-tools" "^8.0.0" chalk "^4.1.2" + command-exists "^1.2.8" + envinfo "^7.7.2" + execa "^1.0.0" hermes-profile-transformer "^0.0.6" ip "^1.1.5" + node-stream-zip "^1.9.1" + ora "^5.4.1" + prompts "^2.4.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" -"@react-native-community/cli-platform-android@^6.3.1": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-6.3.1.tgz#8d35c809ddaf3b6c5d4ef9ff9c814a25a55259aa" - integrity sha512-n5A64RI1ty4ScZCel/3JYY9Anl857dPsUZ86Dwc1GxrbflSB5/+hcCMg5DCNcnJRa4Hdv95SAR5pMmtAjOXApA== +"@react-native-community/cli-hermes@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-8.0.2.tgz#d0c3945b4093128d3095032595c3112378c5cc5e" + integrity sha512-RZ9uHTf3UFtGTYxq88uENJEdaDB8ab+YPBDn+Li1u78IKwNeL04F0A1A3ab3hYUkG4PEPnL2rkYSlzzNFLOSPQ== dependencies: - "@react-native-community/cli-tools" "^6.2.1" + "@react-native-community/cli-platform-android" "^8.0.2" + "@react-native-community/cli-tools" "^8.0.0" chalk "^4.1.2" - execa "^1.0.0" - fs-extra "^8.1.0" - glob "^7.1.3" - jetifier "^1.6.2" - lodash "^4.17.15" - logkitty "^0.7.1" - slash "^3.0.0" - xmldoc "^1.1.2" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" -"@react-native-community/cli-platform-android@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-7.0.1.tgz#d165897edf401f9bceff1f361ef446528133cb52" - integrity sha512-nOr0aMkxAymCnbtsQwXBlyoRN2Y+IzC7Qz5T+/zyWwEbTY8SKQI8uV+8+qttUvzSvuXa2PeXsTWluuliOS8KCw== +"@react-native-community/cli-platform-android@^8.0.0", "@react-native-community/cli-platform-android@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.2.tgz#5e408f06a33712263c2a4c4ef3fde4e43c660585" + integrity sha512-pAEkt+GULesr8FphTpaNYSmu+O1CPQ2zCXkAg4kRd0WXpq3BsVqomyDWd/eMXTkY/yYQMGl6KilU2p9r/hnfhA== dependencies: - "@react-native-community/cli-tools" "^7.0.1" + "@react-native-community/cli-tools" "^8.0.0" chalk "^4.1.2" execa "^1.0.0" fs-extra "^8.1.0" @@ -2197,14 +2270,13 @@ lodash "^4.17.15" logkitty "^0.7.1" slash "^3.0.0" - xmldoc "^1.1.2" -"@react-native-community/cli-platform-ios@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-7.0.1.tgz#1c27af85229246b7a528e97f093e38859896cc93" - integrity sha512-PLRIbzrCzSedmpjuFtQqcqUD45G8q7sEciI1lf5zUbVMXqjIBwJWS7iz8235PyWwj8J4MNHohLC+oyRueFtbGg== +"@react-native-community/cli-platform-ios@^8.0.0", "@react-native-community/cli-platform-ios@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.2.tgz#603079d9def2f2159a40f9905a26c19dbbe6f0ef" + integrity sha512-LxWzj6jIZr5Ot893TKFbt0/T3WkVe6pbc/FSTo+TDQq1FQr/Urv16Uqn0AcL4IX2O1g3Qd13d0vtR/Cdpn3VNw== dependencies: - "@react-native-community/cli-tools" "^7.0.1" + "@react-native-community/cli-tools" "^8.0.0" chalk "^4.1.2" execa "^1.0.0" glob "^7.1.3" @@ -2212,57 +2284,42 @@ lodash "^4.17.15" ora "^5.4.1" plist "^3.0.2" - xcode "^3.0.0" -"@react-native-community/cli-plugin-metro@^7.0.4": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-7.0.4.tgz#cd3010f6b9f955df2630ceea9fc8816a12843dde" - integrity sha512-DEV9WwJ6mB8zWFvNe/Z/eGmtmQmsZcu9VIqjxT7e9xZr2csB9ZlOZiweAMFO5cuVWZZgfL+NYIaQiFi0E0DFXw== +"@react-native-community/cli-plugin-metro@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.0.tgz#0b355a7a6fe93b347ec32b3edb3b2cd96b04dfd8" + integrity sha512-eIowV2ZRbzIWL3RIKVUUSahntXTuAeKzBSsFuhffLZphsV+UdKdtg5ATR9zbq7nsKap4ZseO5DkVqZngUkC7iQ== dependencies: - "@react-native-community/cli-server-api" "^7.0.4" - "@react-native-community/cli-tools" "^6.2.1" + "@react-native-community/cli-server-api" "^8.0.0" + "@react-native-community/cli-tools" "^8.0.0" chalk "^4.1.2" - metro "^0.67.0" - metro-config "^0.67.0" - metro-core "^0.67.0" - metro-react-native-babel-transformer "^0.67.0" - metro-resolver "^0.67.0" - metro-runtime "^0.67.0" + metro "^0.70.1" + metro-config "^0.70.1" + metro-core "^0.70.1" + metro-react-native-babel-transformer "^0.70.1" + metro-resolver "^0.70.1" + metro-runtime "^0.70.1" readline "^1.3.0" -"@react-native-community/cli-server-api@^7.0.4": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-7.0.4.tgz#b71e3413d4188b1bb3110267674ff31ce434b163" - integrity sha512-NzwLKgshx1aFJad5b972rFowEx8ueHRFFXQFnBbvEuE3KsivDOTIwO0zn7cAO1zpxlFRxUFfcI1Pe4Aymi3xZw== +"@react-native-community/cli-server-api@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-8.0.0.tgz#562fee6da9f880531db2af1d3439efb7309281f8" + integrity sha512-TxUs3sMl9clt7sdv30XETc6VRzyaEli2vDrk3TB5W5o5nSd1PmQdP4ccdGLO/nDRXwOy72QmmXlYWMg1XGU0Gg== dependencies: - "@react-native-community/cli-debugger-ui" "^7.0.3" - "@react-native-community/cli-tools" "^6.2.1" + "@react-native-community/cli-debugger-ui" "^8.0.0" + "@react-native-community/cli-tools" "^8.0.0" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.0" - nocache "^2.1.0" + nocache "^3.0.1" pretty-format "^26.6.2" serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-6.2.1.tgz#6f7ada6559846b49fb9fcfed522399b232976ada" - integrity sha512-7RbOkZLT/3YG8CAYYM70ajRKIOgVxK/b4t9KNsPq+2uen99MGezfeglC8s1cs3vBNVVxCo0a2JbXg18bUd8eqA== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - lodash "^4.17.15" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - semver "^6.3.0" - shell-quote "^1.7.3" - -"@react-native-community/cli-tools@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-7.0.1.tgz#73790d6ca2825e42a70a770c1b403a6777e690d6" - integrity sha512-0xra4hKNA5PR2zYVXsDMNiXMGaDNoNRYMY6eTP2aVIxQbqIcVMDWSyCA8wMWX5iOpMWg0cZGaQ6a77f3Rlb34g== +"@react-native-community/cli-tools@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-8.0.0.tgz#2ca9177d7cdf352f6863f278cdacd44066d10473" + integrity sha512-jA4y8CebrRZaOJFjc5zMOnls4KfHkBl2FUtBZV2vcWuedQHa6JVwo+KO88ta3Ysby3uY0+mrZagZfXk7c0mrBw== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2274,56 +2331,45 @@ semver "^6.3.0" shell-quote "^1.7.3" -"@react-native-community/cli-types@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-6.0.0.tgz#90269fbdc7229d5e3b8f2f3e029a94083551040d" - integrity sha512-K493Fk2DMJC0ZM8s8gnfseKxGasIhuDaCUDeLZcoCSFlrjKEuEs1BKKEJiev0CARhKEXKOyyp/uqYM9nWhisNw== +"@react-native-community/cli-types@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-8.0.0.tgz#72d24178e5ed1c2d271da43e0a4a4f59178f261a" + integrity sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow== dependencies: - ora "^3.4.0" + joi "^17.2.1" -"@react-native-community/cli@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-7.0.4.tgz#cb4898bf9e3340ea812fa2bf194abd2429832752" - integrity sha512-W9nACtHWaLJZIP48cQmhQOnl5/7maoWE1Aji67MrLeIoB+ScNTJxaHfV4fMcklD6B6XEhaKokPACRZWm36zAog== - dependencies: - "@react-native-community/cli-debugger-ui" "^7.0.3" - "@react-native-community/cli-hermes" "^6.3.1" - "@react-native-community/cli-plugin-metro" "^7.0.4" - "@react-native-community/cli-server-api" "^7.0.4" - "@react-native-community/cli-tools" "^6.2.1" - "@react-native-community/cli-types" "^6.0.0" - appdirsjs "^1.2.4" +"@react-native-community/cli@^8.0.0": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-8.0.3.tgz#57a29bf4c7edb1ef8c60d7ab0183a75af8e57e80" + integrity sha512-7gY7QCEdpYDbvbdZBt6w64YPExLoiUpH/lVRaR4tKl6JalqXzrUotOJnBOS/qEC4q0nk0WXsiC5EkuiSliKS5Q== + dependencies: + "@react-native-community/cli-clean" "^8.0.0" + "@react-native-community/cli-config" "^8.0.3" + "@react-native-community/cli-debugger-ui" "^8.0.0" + "@react-native-community/cli-doctor" "^8.0.3" + "@react-native-community/cli-hermes" "^8.0.2" + "@react-native-community/cli-plugin-metro" "^8.0.0" + "@react-native-community/cli-server-api" "^8.0.0" + "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-types" "^8.0.0" chalk "^4.1.2" - command-exists "^1.2.8" commander "^2.19.0" - cosmiconfig "^5.1.0" - deepmerge "^3.2.0" - envinfo "^7.7.2" execa "^1.0.0" find-up "^4.1.0" fs-extra "^8.1.0" - glob "^7.1.3" graceful-fs "^4.1.3" - joi "^17.2.1" leven "^3.1.0" lodash "^4.17.15" minimist "^1.2.0" - node-stream-zip "^1.9.1" - ora "^3.4.0" - pretty-format "^26.6.2" prompts "^2.4.0" semver "^6.3.0" - serve-static "^1.13.1" - strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" - wcwidth "^1.0.1" "@react-native/assets@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== -"@react-native/normalize-color@*", "@react-native/normalize-color@2.0.0": +"@react-native/normalize-color@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== @@ -3069,12 +3115,10 @@ async-retry@1.3.3: dependencies: retry "0.13.1" -async@^2.4.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" +async@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" @@ -3261,11 +3305,6 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== -big-integer@1.6.x: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - binary-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" @@ -3294,20 +3333,6 @@ boxen@^5.0.0: widest-line "^3.1.0" wrap-ansi "^7.0.0" -bplist-creator@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" - integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg== - dependencies: - stream-buffers "2.2.x" - -bplist-parser@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1" - integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== - dependencies: - big-integer "1.6.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3553,7 +3578,7 @@ chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3642,13 +3667,6 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -3656,7 +3674,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-spinners@^2.0.0, cli-spinners@^2.5.0: +cli-spinners@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== @@ -4356,15 +4374,6 @@ deprecated-obj@2.0.0: flat "^5.0.2" lodash "^4.17.20" -deprecated-react-native-prop-types@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz#c10c6ee75ff2b6de94bb127f142b814e6e08d9ab" - integrity sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA== - dependencies: - "@react-native/normalize-color" "*" - invariant "*" - prop-types "*" - deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -5565,17 +5574,17 @@ hermes-engine@~0.11.0: resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.11.0.tgz#bb224730d230a02a5af02c4e090d1f52d57dd3db" integrity sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw== -hermes-estree@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.5.0.tgz#36432a2b12f01b217244da098924efdfdfc12327" - integrity sha512-1h8rvG23HhIR5K6Kt0e5C7BC72J1Ath/8MmSta49vxXp/j6wl7IMHvIRFYBQr35tWnQY97dSGR2uoAJ5pHUQkg== +hermes-estree@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.6.0.tgz#e866fddae1b80aec65fe2ae450a5f2070ad54033" + integrity sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w== -hermes-parser@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.5.0.tgz#8b678dd8b29a08b57cbaf60adba4896494c59a53" - integrity sha512-ARnJBScKAkkq8j3BHrNGBUv/4cSpZNbKDsVizEtzmsFeqC67Dopa5s4XRe+e3wN52Dh5Mj2kDB5wJvhcxwDkPg== +hermes-parser@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.6.0.tgz#00d14e91bca830b3c1457050fa4187400cb96328" + integrity sha512-Vf58jBZca2+QBLR9h7B7mdg8oFz2g5ILz1iVouZ5DOrOrAfBmPfJjdjDT8jrO0f+iJ4/hSRrQHqHIjSnTaLUDQ== dependencies: - hermes-estree "0.5.0" + hermes-estree "0.6.0" hermes-profile-transformer@^0.0.6: version "0.0.6" @@ -5813,7 +5822,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invariant@*, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6712,14 +6721,14 @@ jest-watcher@^27.2.5: jest-util "^27.2.5" string-length "^4.0.1" -jest-worker@^26.0.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== +jest-worker@^27.2.0, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" - supports-color "^7.0.0" + supports-color "^8.0.0" jest-worker@^27.2.5: version "27.2.5" @@ -6730,15 +6739,6 @@ jest-worker@^27.2.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest@^27.0.0: version "27.2.5" resolved "https://registry.yarnpkg.com/jest/-/jest-27.2.5.tgz#7d8a5c8781a160f693beeb7c68e46c16ef948148" @@ -7135,18 +7135,11 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -7271,6 +7264,11 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -7351,79 +7349,79 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== -metro-babel-transformer@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.67.0.tgz#42fe82af9953e5c62d9a8d7d544eb7be9020dd18" - integrity sha512-SBqc4nq/dgsPNFm+mpWcQQzJaXnh0nrfz2pSnZC4i6zMtIakrTWb8SQ78jOU1FZVEZ3nu9xCYVHS9Tbr/LoEuw== +metro-babel-transformer@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.3.tgz#dca61852be273824a4b641bd1ecafff07ff3ad1f" + integrity sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA== dependencies: "@babel/core" "^7.14.0" - hermes-parser "0.5.0" - metro-source-map "0.67.0" + hermes-parser "0.6.0" + metro-source-map "0.70.3" nullthrows "^1.1.1" -metro-cache-key@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.67.0.tgz#4df6a73cced199e1bddd0f3454bb931a27141eeb" - integrity sha512-FNJe5Rcb2uzY6G6tsqCf0RV4t2rCeX6vSHBxmP7k+4aI4NqX4evtPI0K82r221nBzm5DqNWCURZ0RYUT6jZMGA== +metro-cache-key@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.70.3.tgz#898803db04178a8f440598afba7d82a9cf35abf7" + integrity sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw== -metro-cache@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.67.0.tgz#928db5742542719677468c4d22ea29b71c7ec8fc" - integrity sha512-IY5dXiR76L75b2ue/mv+9vW8g5hdQJU6YEe81lj6gTSoUrhcONT0rzY+Gh5QOS2Kk6z9utZQMvd9PRKL9/635A== +metro-cache@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.70.3.tgz#42cf3cdf8a7b3691f3bef9a86bed38d4c5f6201f" + integrity sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg== dependencies: - metro-core "0.67.0" - mkdirp "^0.5.1" + metro-core "0.70.3" rimraf "^2.5.4" -metro-config@0.67.0, metro-config@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.67.0.tgz#5507d3b295bd10c87bd13dbe5a3033a357418786" - integrity sha512-ThAwUmzZwTbKyyrIn2bKIcJDPDBS0LKAbqJZQioflvBGfcgA21h3fdL3IxRmvCEl6OnkEWI0Tn1Z9w2GLAjf2g== +metro-config@0.70.3, metro-config@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.70.3.tgz#fe6f7330f679d5594e5724af7a69d4dbe1bb5bc3" + integrity sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA== dependencies: cosmiconfig "^5.0.5" jest-validate "^26.5.2" - metro "0.67.0" - metro-cache "0.67.0" - metro-core "0.67.0" - metro-runtime "0.67.0" + metro "0.70.3" + metro-cache "0.70.3" + metro-core "0.70.3" + metro-runtime "0.70.3" -metro-core@0.67.0, metro-core@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.67.0.tgz#75066e11b4df220992abf9cd6200279dd87876c8" - integrity sha512-TOa/ShE1bUq83fGNfV6rFwyfZ288M8ydmWN3g9C2OW8emOHLhJslYD/SIU4DhDkP/99yaJluIALdZ2g0+pCrvQ== +metro-core@0.70.3, metro-core@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.70.3.tgz#bf4dda15a5185f5a7931de463a1b97ac9ef680a0" + integrity sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw== dependencies: jest-haste-map "^27.3.1" lodash.throttle "^4.1.1" - metro-resolver "0.67.0" + metro-resolver "0.70.3" -metro-hermes-compiler@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.67.0.tgz#9c1340f1882fbf535145868d0d28211ca15b0477" - integrity sha512-X5Pr1jC8/kO6d1EBDJ6yhtuc5euHX89UDNv8qdPJHAET03xfFnlojRPwOw6il2udAH20WLBv+F5M9VY+58zspQ== +metro-hermes-compiler@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.70.3.tgz#ac7ed656fbcf0a59adcd010d3639e4cfdbc76b4f" + integrity sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg== -metro-inspector-proxy@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.67.0.tgz#22b360a837b07e9e2bc87a71af6154dd8fcc02a5" - integrity sha512-5Ubjk94qpNaU3OT2IZa4/dec09bauic1hzWms4czorBzDenkp4kYXG9/aWTmgQLtCk92H3Q8jKl1PQRxUSkrOQ== +metro-inspector-proxy@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.70.3.tgz#321c25b2261e76d8c4bcc39e092714adfcb50a14" + integrity sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw== dependencies: connect "^3.6.5" debug "^2.2.0" ws "^7.5.1" yargs "^15.3.1" -metro-minify-uglify@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.67.0.tgz#28a77dbd78d9e558dba8c2f31c2b9c6f939df966" - integrity sha512-4CmM5b3MTAmQ/yFEfsHOhD2SuBObB2YF6PKzXZc4agUsQVVtkrrNElaiWa8w26vrTzA9emwcyurxMf4Nl3lYPQ== +metro-minify-uglify@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.70.3.tgz#2f28129ca5b8ef958f3e3fcf004c3707c7732e1e" + integrity sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog== dependencies: uglify-es "^3.1.9" -metro-react-native-babel-preset@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.67.0.tgz#53aec093f53a09b56236a9bb534d76658efcbec7" - integrity sha512-tgTG4j0SKwLHbLRELMmgkgkjV1biYkWlGGKOmM484/fJC6bpDikdaFhfjsyE+W+qt7I5szbCPCickMTNQ+zwig== +metro-react-native-babel-preset@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz#1c77ec4544ecd5fb6c803e70b21284d7483e4842" + integrity sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg== dependencies: "@babel/core" "^7.14.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" @@ -7443,17 +7441,15 @@ metro-react-native-babel-preset@0.67.0: "@babel/plugin-transform-destructuring" "^7.0.0" "@babel/plugin-transform-exponentiation-operator" "^7.0.0" "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" "@babel/plugin-transform-function-name" "^7.0.0" "@babel/plugin-transform-literals" "^7.0.0" "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-assign" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" "@babel/plugin-transform-parameters" "^7.0.0" "@babel/plugin-transform-react-display-name" "^7.0.0" "@babel/plugin-transform-react-jsx" "^7.0.0" "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-regenerator" "^7.0.0" "@babel/plugin-transform-runtime" "^7.0.0" "@babel/plugin-transform-shorthand-properties" "^7.0.0" "@babel/plugin-transform-spread" "^7.0.0" @@ -7464,61 +7460,63 @@ metro-react-native-babel-preset@0.67.0: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-transformer@0.67.0, metro-react-native-babel-transformer@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.67.0.tgz#756d32eb3c05cab3d72fcb1700f8fd09322bb07f" - integrity sha512-P0JT09n7T01epUtgL9mH6BPat3xn4JjBakl4lWHdL61cvEGcrxuIom1eoFFKkgU/K5AVLU4aCAttHS7nSFCcEQ== +metro-react-native-babel-transformer@0.70.3, metro-react-native-babel-transformer@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.3.tgz#195597c32488f820aa9e441bbca7c04fe7de7a2d" + integrity sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg== dependencies: "@babel/core" "^7.14.0" babel-preset-fbjs "^3.4.0" - hermes-parser "0.5.0" - metro-babel-transformer "0.67.0" - metro-react-native-babel-preset "0.67.0" - metro-source-map "0.67.0" + hermes-parser "0.6.0" + metro-babel-transformer "0.70.3" + metro-react-native-babel-preset "0.70.3" + metro-source-map "0.70.3" nullthrows "^1.1.1" -metro-resolver@0.67.0, metro-resolver@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.67.0.tgz#8143c716f77e468d1d42eca805243706eb349959" - integrity sha512-d2KS/zAyOA/z/q4/ff41rAp+1txF4H6qItwpsls/RHStV2j6PqgRHUzq/3ga+VIeoUJntYJ8nGW3+3qSrhFlig== +metro-resolver@0.70.3, metro-resolver@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.70.3.tgz#c64fdd6d0a88fa62f3f99f87e539b5f603bd47bf" + integrity sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw== dependencies: absolute-path "^0.0.0" -metro-runtime@0.67.0, metro-runtime@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.67.0.tgz#a8888dfd06bcebbac3c99dcac7cd622510dd8ee0" - integrity sha512-IFtSL0JUt1xK3t9IoLflTDft82bjieSzdIJWLzrRzBMlesz8ox5bVmnpQbVQEwfYUpEOxbM3VOZauVbdCmXA7g== +metro-runtime@0.70.3, metro-runtime@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.3.tgz#09231b9d05dcbdfb5a13df0a45307273e6fe1168" + integrity sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w== + dependencies: + "@babel/runtime" "^7.0.0" -metro-source-map@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.67.0.tgz#e28db7253b9ca688e60d5710ebdccba60b45b2df" - integrity sha512-yxypInsRo3SfS00IgTuL6a2W2tfwLY//vA2E+GeqGBF5zTbJZAhwNGIEl8S87XXZhwzJcxf5/8LjJC1YDzabww== +metro-source-map@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.3.tgz#f5976108c18d4661eaa4d188c96713e5d67a903b" + integrity sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw== dependencies: "@babel/traverse" "^7.14.0" "@babel/types" "^7.0.0" invariant "^2.2.4" - metro-symbolicate "0.67.0" + metro-symbolicate "0.70.3" nullthrows "^1.1.1" - ob1 "0.67.0" + ob1 "0.70.3" source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.67.0.tgz#16729d05663d28176895244b3d932a898fca2b45" - integrity sha512-ZqVVcfa0xSz40eFzA5P8pCF3V6Tna9RU1prFzAJTa3j9dCGqwh0HTXC8AIkMtgX7hNdZrCJI1YipzUBlwkT0/A== +metro-symbolicate@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.3.tgz#b039e5629c4ed0c999ea0496d580e1c98260f5cb" + integrity sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA== dependencies: invariant "^2.2.4" - metro-source-map "0.67.0" + metro-source-map "0.70.3" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.67.0.tgz#6122aa4e5e5f9a767cebcc5af6fd1695666683ce" - integrity sha512-DQFoSDIJdTMPDTUlKaCNJjEXiHGwFNneAF9wDSJ3luO5gigM7t7MuSaPzF4hpjmfmcfPnRhP6AEn9jcza2Sh8Q== +metro-transform-plugins@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.70.3.tgz#7fe87cd0d8979b4d5d6e375751d86188fff38fd9" + integrity sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" @@ -7526,29 +7524,29 @@ metro-transform-plugins@0.67.0: "@babel/traverse" "^7.14.0" nullthrows "^1.1.1" -metro-transform-worker@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.67.0.tgz#5689553c25b0657aadefdf4ea2cd8dd06e18882a" - integrity sha512-29n+JdTb80ROiv/wDiBVlY/xRAF/nrjhp/Udv/XJl1DZb+x7JEiPxpbpthPhwwl+AYxVrostGB0W06WJ61hfiw== +metro-transform-worker@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.70.3.tgz#62bfa28ebef98803531c4bcb558de5fc804c94ef" + integrity sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw== dependencies: "@babel/core" "^7.14.0" "@babel/generator" "^7.14.0" "@babel/parser" "^7.14.0" "@babel/types" "^7.0.0" babel-preset-fbjs "^3.4.0" - metro "0.67.0" - metro-babel-transformer "0.67.0" - metro-cache "0.67.0" - metro-cache-key "0.67.0" - metro-hermes-compiler "0.67.0" - metro-source-map "0.67.0" - metro-transform-plugins "0.67.0" + metro "0.70.3" + metro-babel-transformer "0.70.3" + metro-cache "0.70.3" + metro-cache-key "0.70.3" + metro-hermes-compiler "0.70.3" + metro-source-map "0.70.3" + metro-transform-plugins "0.70.3" nullthrows "^1.1.1" -metro@0.67.0, metro@^0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.67.0.tgz#8007a041d22de1cdb05184431c67eb7989eef6e0" - integrity sha512-DwuBGAFcAivoac/swz8Lp7Y5Bcge1tzT7T6K0nf1ubqJP8YzBUtyR4pkjEYVUzVu/NZf7O54kHSPVu1ibYzOBQ== +metro@0.70.3, metro@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.70.3.tgz#4290f538ab5446c7050e718b5c5823eea292c5c2" + integrity sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.14.0" @@ -7559,7 +7557,7 @@ metro@0.67.0, metro@^0.67.0: "@babel/types" "^7.0.0" absolute-path "^0.0.0" accepts "^1.3.7" - async "^2.4.0" + async "^3.2.2" chalk "^4.0.0" ci-info "^2.0.0" connect "^3.6.5" @@ -7567,30 +7565,29 @@ metro@0.67.0, metro@^0.67.0: denodeify "^1.2.1" error-stack-parser "^2.0.6" fs-extra "^1.0.0" - graceful-fs "^4.1.3" - hermes-parser "0.5.0" + graceful-fs "^4.2.4" + hermes-parser "0.6.0" image-size "^0.6.0" invariant "^2.2.4" jest-haste-map "^27.3.1" - jest-worker "^26.0.0" + jest-worker "^27.2.0" lodash.throttle "^4.1.1" - metro-babel-transformer "0.67.0" - metro-cache "0.67.0" - metro-cache-key "0.67.0" - metro-config "0.67.0" - metro-core "0.67.0" - metro-hermes-compiler "0.67.0" - metro-inspector-proxy "0.67.0" - metro-minify-uglify "0.67.0" - metro-react-native-babel-preset "0.67.0" - metro-resolver "0.67.0" - metro-runtime "0.67.0" - metro-source-map "0.67.0" - metro-symbolicate "0.67.0" - metro-transform-plugins "0.67.0" - metro-transform-worker "0.67.0" + metro-babel-transformer "0.70.3" + metro-cache "0.70.3" + metro-cache-key "0.70.3" + metro-config "0.70.3" + metro-core "0.70.3" + metro-hermes-compiler "0.70.3" + metro-inspector-proxy "0.70.3" + metro-minify-uglify "0.70.3" + metro-react-native-babel-preset "0.70.3" + metro-resolver "0.70.3" + metro-runtime "0.70.3" + metro-source-map "0.70.3" + metro-symbolicate "0.70.3" + metro-transform-plugins "0.70.3" + metro-transform-worker "0.70.3" mime-types "^2.1.27" - mkdirp "^0.5.1" node-fetch "^2.2.0" nullthrows "^1.1.1" rimraf "^2.5.4" @@ -7664,11 +7661,6 @@ mime@^2.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -7802,10 +7794,10 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nocache@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" - integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== node-dir@^0.1.17: version "0.1.17" @@ -7913,10 +7905,10 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -ob1@0.67.0: - version "0.67.0" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.67.0.tgz#91f104c90641b1af8c364fc82a4b2c7d0801072d" - integrity sha512-YvZtX8HKYackQ5PwdFIuuNFVsMChRPHvnARRRT0Vk59xsBvL5t9U1Ock3M1sYrKj+Gp73+0q9xcHLAxI+xLi5g== +ob1@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.3.tgz#f48cd5a5abf54b0c423b1b06b6d4ff4d049816cb" + integrity sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ== object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" @@ -8015,13 +8007,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -8083,18 +8068,6 @@ ora@5.4.1, ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -8430,14 +8403,6 @@ plist@^3.0.2: base64-js "^1.5.1" xmlbuilder "^9.0.7" -plist@^3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" - integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== - dependencies: - base64-js "^1.5.1" - xmlbuilder "^15.1.1" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -8540,15 +8505,6 @@ prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@*: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -8628,74 +8584,80 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-devtools-core@^4.23.0: - version "4.25.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.25.0.tgz#78b11a2c9f81dd9ebff3745ab4ee2147cc96c12a" - integrity sha512-iewRrnu0ZnmfL+jJayKphXj04CFh6i3ezVnpCtcnZbTPSQgN09XqHAzXbKbqNDl7aTg9QLNkQRP6M3DvdrinWA== +react-devtools-core@4.24.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.0.tgz#7daa196bdc64f3626b3f54f2ff2b96f7c4fdf017" + integrity sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg== dependencies: shell-quote "^1.6.1" ws "^7" -"react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1, react-is@^17.0.2: +"react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.4: +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-native-codegen@^0.0.17: - version "0.0.17" - resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.17.tgz#83fb814d94061cbd46667f510d2ddba35ffb50ac" - integrity sha512-7GIEUmAemH9uWwB6iYXNNsPoPgH06pxzGRmdBzK98TgFBdYJZ7CBuZFPMe4jmHQTPOkQazKZ/w5O6/71JBixmw== +react-native-codegen@^0.69.1: + version "0.69.1" + resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.69.1.tgz#3632be2f24464e6fad8dd11a25d1b6f3bc2c7d0b" + integrity sha512-TOZEqBarczcyYN3iZE3VpKkooOevaAzBq9n7lU0h9mQUvtRhLVyolc+a5K6cWI0e4v4K69I0MqzjPcPeFKo32Q== dependencies: "@babel/parser" "^7.14.0" flow-parser "^0.121.0" jscodeshift "^0.13.1" nullthrows "^1.1.1" -react-native-gradle-plugin@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz#b61a9234ad2f61430937911003cddd7e15c72b45" - integrity sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg== +react-native-gradle-plugin@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz#96602f909745239deab7b589443f14fce5da2056" + integrity sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g== -react-native@~0.68.2: - version "0.68.2" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.68.2.tgz#07547cd31bb9335a7fa4135cfbdc24e067142585" - integrity sha512-qNMz+mdIirCEmlrhapAtAG+SWVx6MAiSfCbFNhfHqiqu1xw1OKXdzIrjaBEPihRC2pcORCoCHduHGQe/Pz9Yuw== +react-native@~0.69.1: + version "0.69.1" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.69.1.tgz#093363ea697185b5d8f0e523fce3654b833ad0be" + integrity sha512-585NmzSuYUfday8YsfqgreFAZbXRI/kxKsiuaShwGHgkwdtmE5qA7WfGItgxZBOZD6g/Hm1YBUqSwIm07tPa6A== dependencies: "@jest/create-cache-key-function" "^27.0.1" - "@react-native-community/cli" "^7.0.3" - "@react-native-community/cli-platform-android" "^7.0.1" - "@react-native-community/cli-platform-ios" "^7.0.1" + "@react-native-community/cli" "^8.0.0" + "@react-native-community/cli-platform-android" "^8.0.0" + "@react-native-community/cli-platform-ios" "^8.0.0" "@react-native/assets" "1.0.0" "@react-native/normalize-color" "2.0.0" "@react-native/polyfills" "2.0.0" abort-controller "^3.0.0" anser "^1.4.9" base64-js "^1.1.2" - deprecated-react-native-prop-types "^2.3.0" event-target-shim "^5.0.1" hermes-engine "~0.11.0" invariant "^2.2.4" jsc-android "^250230.2.1" - metro-react-native-babel-transformer "0.67.0" - metro-runtime "0.67.0" - metro-source-map "0.67.0" + memoize-one "^5.0.0" + metro-react-native-babel-transformer "0.70.3" + metro-runtime "0.70.3" + metro-source-map "0.70.3" + mkdirp "^0.5.1" nullthrows "^1.1.1" pretty-format "^26.5.2" promise "^8.0.3" - react-devtools-core "^4.23.0" - react-native-codegen "^0.0.17" - react-native-gradle-plugin "^0.0.6" + react-devtools-core "4.24.0" + react-native-codegen "^0.69.1" + react-native-gradle-plugin "^0.0.7" react-refresh "^0.4.0" react-shallow-renderer "16.14.1" regenerator-runtime "^0.13.2" - scheduler "^0.20.2" + scheduler "^0.21.0" stacktrace-parser "^0.1.3" - use-subscription ">=1.0.0 <1.6.0" + use-sync-external-store "^1.0.0" whatwg-fetch "^3.0.0" ws "^6.1.4" @@ -8704,7 +8666,7 @@ react-refresh@^0.4.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== -react-shallow-renderer@16.14.1, react-shallow-renderer@^16.13.1: +react-shallow-renderer@16.14.1: version "16.14.1" resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.14.1.tgz#bf0d02df8a519a558fd9b8215442efa5c840e124" integrity sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg== @@ -8712,23 +8674,29 @@ react-shallow-renderer@16.14.1, react-shallow-renderer@^16.13.1: object-assign "^4.1.1" react-is "^16.12.0 || ^17.0.0" -react-test-renderer@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c" - integrity sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ== +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== dependencies: object-assign "^4.1.1" - react-is "^17.0.2" - react-shallow-renderer "^16.13.1" - scheduler "^0.20.2" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== +react-test-renderer@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e" + integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA== + dependencies: + react-is "^18.2.0" + react-shallow-renderer "^16.15.0" + scheduler "^0.23.0" + +react@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" read-pkg-up@^1.0.1: version "1.0.1" @@ -8882,6 +8850,13 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -8889,7 +8864,7 @@ regenerate-unicode-properties@^8.2.0: dependencies: regenerate "^1.4.0" -regenerate@^1.4.0: +regenerate@^1.4.0, regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -8939,6 +8914,18 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + registry-auth-token@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" @@ -8958,6 +8945,11 @@ regjsgen@^0.5.1: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -8965,6 +8957,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + release-it@^14.0.3: version "14.11.6" resolved "https://registry.yarnpkg.com/release-it/-/release-it-14.11.6.tgz#a285eaac25f9f3a6d47e688911e539af53a74446" @@ -9099,14 +9098,6 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -9197,11 +9188,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -9209,13 +9195,19 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +scheduler@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820" + integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ== + dependencies: + loose-envify "^1.1.0" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" semver-diff@^3.1.1: version "3.1.1" @@ -9363,15 +9355,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -simple-plist@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017" - integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw== - dependencies: - bplist-creator "0.1.0" - bplist-parser "0.3.1" - plist "^3.0.5" - sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -9565,11 +9548,6 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-buffers@2.2.x: - version "2.2.0" - resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" - integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== - string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" @@ -10134,6 +10112,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -10142,16 +10125,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -10251,12 +10252,10 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -"use-subscription@>=1.0.0 <1.6.0": - version "1.5.1" - resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" - integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== - dependencies: - object-assign "^4.1.1" +use-sync-external-store@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== use@^3.1.0: version "3.1.1" @@ -10283,11 +10282,6 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" - integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== - v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -10515,14 +10509,6 @@ ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -xcode@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" - integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== - dependencies: - simple-plist "^1.1.0" - uuid "^7.0.3" - xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" @@ -10533,11 +10519,6 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlbuilder@^15.1.1: - version "15.1.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" @@ -10548,13 +10529,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmldoc@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-1.1.2.tgz#6666e029fe25470d599cd30e23ff0d1ed50466d7" - integrity sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ== - dependencies: - sax "^1.2.1" - xregexp@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" From 77bf93c5ad1e0687416faf6714f1ae3928c2ba51 Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Tue, 19 Jul 2022 09:53:38 +0200 Subject: [PATCH 03/14] chore: update Jest to 28 (#1008) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update jest * refactor: pass useFakeTimer config in tests * refactor: remove unused code * fix jest config unable to discover babel due to rootDir change Co-authored-by: Michał Pierzchała --- babel.config.js | 2 +- package.json | 14 +- src/__tests__/auto-cleanup.test.tsx | 4 +- src/__tests__/timerUtils.ts | 7 +- src/__tests__/timers.test.ts | 9 +- src/__tests__/waitFor.test.tsx | 59 +- .../waitForElementToBeRemoved.test.tsx | 9 +- src/helpers/timers.ts | 14 +- yarn.lock | 1550 +++++++---------- 9 files changed, 682 insertions(+), 986 deletions(-) diff --git a/babel.config.js b/babel.config.js index 26bde5943..9c4d66f5f 100644 --- a/babel.config.js +++ b/babel.config.js @@ -6,7 +6,7 @@ module.exports = { '@babel/preset-env', { targets: { - node: '10', + node: '14', }, bugfixes: true, }, diff --git a/package.json b/package.json index bdba4d4e2..0a46df2a9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@babel/cli": "^7.8.4", "@babel/core": "^7.9.0", "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.18.0", "@babel/preset-env": "^7.9.6", "@babel/preset-flow": "^7.9.0", "@babel/preset-react": "^7.9.4", @@ -37,11 +37,11 @@ "@callstack/eslint-config": "^11.0.0", "@release-it/conventional-changelog": "^2.0.0", "@testing-library/jest-native": "~4.0.2", - "@types/jest": "^27.0.0", + "@types/jest": "^28.0.0", "@types/react": "^17.0.0", "@types/react-native": "^0.66.6", "@types/react-test-renderer": "^17.0.0", - "babel-jest": "^27.0.0", + "babel-jest": "^28.0.0", "conventional-changelog-cli": "^2.0.11", "cp-cli": "^2.0.0", "dedent": "^0.7.0", @@ -49,7 +49,7 @@ "eslint": "^7.32.0", "flow-bin": "~0.170.0", "flow-copy-source": "^2.0.9", - "jest": "^27.0.0", + "jest": "^28.0.0", "react": "^18.0.0", "react-native": "~0.69.1", "react-test-renderer": "^18.0.0", @@ -82,10 +82,10 @@ "prepare": "yarn build" }, "jest": { - "preset": "../jest-preset", - "rootDir": "./src", + "preset": "./jest-preset", "testPathIgnorePatterns": [ - "timerUtils" + "timerUtils", + "examples/" ], "testTimeout": 60000, "transformIgnorePatterns": [ diff --git a/src/__tests__/auto-cleanup.test.tsx b/src/__tests__/auto-cleanup.test.tsx index 87c1bf945..cb11f5e62 100644 --- a/src/__tests__/auto-cleanup.test.tsx +++ b/src/__tests__/auto-cleanup.test.tsx @@ -38,13 +38,13 @@ test('component is automatically umounted after first test ends', () => { }); test('does not time out with legacy fake timers', () => { - jest.useFakeTimers('legacy'); + jest.useFakeTimers({ legacyFakeTimers: true }); render(); expect(isMounted).toEqual(true); }); test('does not time out with fake timers', () => { - jest.useFakeTimers('modern'); + jest.useFakeTimers(); render(); expect(isMounted).toEqual(true); }); diff --git a/src/__tests__/timerUtils.ts b/src/__tests__/timerUtils.ts index 78cfe53ca..ecf12a9e8 100644 --- a/src/__tests__/timerUtils.ts +++ b/src/__tests__/timerUtils.ts @@ -1,12 +1,7 @@ import { setTimeout } from '../helpers/timers'; -const TimerMode = { - Legacy: 'legacy', - Modern: 'modern', // broken for now -} as const; - async function sleep(ms: number): Promise { return new Promise((resolve) => setTimeout(resolve, ms)); } -export { TimerMode, sleep }; +export { sleep }; diff --git a/src/__tests__/timers.test.ts b/src/__tests__/timers.test.ts index f1ef62eb1..6149f74e3 100644 --- a/src/__tests__/timers.test.ts +++ b/src/__tests__/timers.test.ts @@ -1,11 +1,10 @@ import waitFor from '../waitFor'; -import { TimerMode } from './timerUtils'; -describe.each([TimerMode.Legacy, TimerMode.Modern])( - '%s fake timers tests', - (fakeTimerType) => { +describe.each([false, true])( + 'fake timers tests (legacyFakeTimers = %s)', + (legacyFakeTimers) => { beforeEach(() => { - jest.useFakeTimers(fakeTimerType); + jest.useFakeTimers({ legacyFakeTimers }); }); test('it successfully runs tests', () => { diff --git a/src/__tests__/waitFor.test.tsx b/src/__tests__/waitFor.test.tsx index 752cab5dd..a7ae4add9 100644 --- a/src/__tests__/waitFor.test.tsx +++ b/src/__tests__/waitFor.test.tsx @@ -1,7 +1,6 @@ import * as React from 'react'; import { Text, TouchableOpacity, View } from 'react-native'; import { fireEvent, render, waitFor } from '..'; -import { TimerMode } from './timerUtils'; class Banana extends React.Component { changeFresh = () => { @@ -79,36 +78,26 @@ test('waits for element with custom interval', async () => { expect(mockFn).toHaveBeenCalledTimes(2); }); -test('waits for element until it stops throwing using modern fake timers', async () => { - jest.useFakeTimers('modern'); - const { getByText, queryByText } = render(); - - fireEvent.press(getByText('Change freshness!')); - expect(queryByText('Fresh')).toBeNull(); - - jest.advanceTimersByTime(300); - const freshBananaText = await waitFor(() => getByText('Fresh')); - - expect(freshBananaText.props.children).toBe('Fresh'); -}); +test.each([false, true])( + 'waits for element until it stops throwing using fake timers (legacyFakeTimers = %s)', + async (legacyFakeTimers) => { + jest.useFakeTimers({ legacyFakeTimers }); + const { getByText, queryByText } = render(); -test('waits for element until it stops throwing using legacy fake timers', async () => { - jest.useFakeTimers('legacy'); - const { getByText, queryByText } = render(); + fireEvent.press(getByText('Change freshness!')); + expect(queryByText('Fresh')).toBeNull(); - fireEvent.press(getByText('Change freshness!')); - expect(queryByText('Fresh')).toBeNull(); - - jest.advanceTimersByTime(300); - const freshBananaText = await waitFor(() => getByText('Fresh')); + jest.advanceTimersByTime(300); + const freshBananaText = await waitFor(() => getByText('Fresh')); - expect(freshBananaText.props.children).toBe('Fresh'); -}); + expect(freshBananaText.props.children).toBe('Fresh'); + } +); -test.each([TimerMode.Legacy, TimerMode.Modern])( - 'waits for assertion until timeout is met with %s fake timers', - async (fakeTimerType) => { - jest.useFakeTimers(fakeTimerType); +test.each([false, true])( + 'waits for assertion until timeout is met with fake timers (legacyFakeTimers = %s)', + async (legacyFakeTimers) => { + jest.useFakeTimers({ legacyFakeTimers }); const mockFn = jest.fn(() => { throw Error('test'); @@ -124,10 +113,10 @@ test.each([TimerMode.Legacy, TimerMode.Modern])( } ); -test.each([TimerMode.Legacy, TimerMode.Modern])( - 'waits for assertion until timeout is met with %s fake timers', - async (fakeTimerType) => { - jest.useFakeTimers(fakeTimerType); +test.each([false, true])( + 'waits for assertion until timeout is met with fake timers (legacyFakeTimers = %s)', + async (legacyFakeTimers) => { + jest.useFakeTimers({ legacyFakeTimers }); const mockErrorFn = jest.fn(() => { throw Error('test'); @@ -150,10 +139,10 @@ test.each([TimerMode.Legacy, TimerMode.Modern])( } ); -test.each([TimerMode.Legacy, TimerMode.Legacy])( - 'awaiting something that succeeds before timeout works with %s fake timers', - async (fakeTimerType) => { - jest.useFakeTimers(fakeTimerType); +test.each([false, true])( + 'awaiting something that succeeds before timeout works with fake timers (legacyFakeTimers = %s)', + async (legacyFakeTimers) => { + jest.useFakeTimers({ legacyFakeTimers }); let calls = 0; const mockFn = jest.fn(() => { diff --git a/src/__tests__/waitForElementToBeRemoved.test.tsx b/src/__tests__/waitForElementToBeRemoved.test.tsx index 5ed0dd2ee..e7beeed26 100644 --- a/src/__tests__/waitForElementToBeRemoved.test.tsx +++ b/src/__tests__/waitForElementToBeRemoved.test.tsx @@ -1,7 +1,6 @@ import React, { useState } from 'react'; import { View, Text, TouchableOpacity } from 'react-native'; import { render, fireEvent, waitForElementToBeRemoved } from '..'; -import { TimerMode } from './timerUtils'; const TestSetup = ({ shouldUseDelay = true }) => { const [isAdded, setIsAdded] = useState(true); @@ -130,10 +129,10 @@ test('waits with custom interval', async () => { expect(mockFn).toHaveBeenCalledTimes(4); }); -test.each([TimerMode.Legacy, TimerMode.Modern])( - 'works with %s fake timers', - async (fakeTimerType) => { - jest.useFakeTimers(fakeTimerType); +test.each([false, true])( + 'works with fake timers (legacyFakeTimers = %s)', + async (legacyFakeTimers) => { + jest.useFakeTimers({ legacyFakeTimers }); const mockFn = jest.fn(() => ); diff --git a/src/helpers/timers.ts b/src/helpers/timers.ts index e140e991a..579cf3755 100644 --- a/src/helpers/timers.ts +++ b/src/helpers/timers.ts @@ -2,6 +2,8 @@ /* globals jest */ const globalObj = typeof window === 'undefined' ? global : window; +type FakeTimersTypes = 'modern' | 'legacy'; + // Currently this fn only supports jest timers, but it could support other test runners in the future. function runWithRealTimers(callback: () => T): T { const fakeTimersType = getJestFakeTimersType(); @@ -12,13 +14,14 @@ function runWithRealTimers(callback: () => T): T { const callbackReturnValue = callback(); if (fakeTimersType) { - jest.useFakeTimers(fakeTimersType); + const fakeTimersConfig = getFakeTimersConfigFromType(fakeTimersType); + jest.useFakeTimers(fakeTimersConfig); } return callbackReturnValue; } -function getJestFakeTimersType() { +function getJestFakeTimersType(): FakeTimersTypes | null { // istanbul ignore if if ( typeof jest === 'undefined' || @@ -49,9 +52,16 @@ function getJestFakeTimersType() { // not using Jest's modern fake timers } } + return null; } +function getFakeTimersConfigFromType(type: FakeTimersTypes) { + return type === 'legacy' + ? { legacyFakeTimers: true } + : { legacyFakeTimers: false }; +} + const jestFakeTimersAreEnabled = (): boolean => Boolean(getJestFakeTimersType()); diff --git a/yarn.lock b/yarn.lock index a0ce7d2be..647e078d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -61,28 +61,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.1.0", "@babel/core@^7.14.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - -"@babel/core@^7.13.16": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== @@ -103,6 +82,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.14.0", "@babel/core@^7.9.0": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + "@babel/generator@^7.14.0", "@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.7.2": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" @@ -731,12 +731,12 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.0", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0", "@babel/parser@^7.7.2": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.0", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0": version "7.17.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== -"@babel/parser@^7.13.16", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": +"@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== @@ -931,13 +931,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-flow@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.0.tgz#07427021d093ed77019408221beaf0272bbcfaec" - integrity sha512-dH91yCo0RyqfzWgoM5Ji9ir8fQ+uFbt9KHM3d2x4jZOuHS6wNA+CRmRUP/BWCsHG2bjc7A2Way6AvH1eQk0wig== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-flow@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" @@ -1147,15 +1140,7 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-flow" "^7.16.7" -"@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.0.tgz#edd968dc2041c1b69e451a262e948d6654a79dc2" - integrity sha512-vs/F5roOaO/+WxKfp9PkvLsAyj0G+Q0zbFimHm9X2KDgabN2XmNFoAafmeGEYspUlIF9+MvVmyek9UyHiqeG/w== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-flow" "^7.16.0" - -"@babel/plugin-transform-flow-strip-types@^7.18.6": +"@babel/plugin-transform-flow-strip-types@^7.18.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.9.tgz#5b4cc521426263b5ce08893a2db41097ceba35bf" integrity sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A== @@ -1605,7 +1590,7 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== @@ -1765,48 +1750,49 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.2.5.tgz#bddbf8d41c191f17b52bf0c9e6c0d18605e35d6e" - integrity sha512-smtlRF9vNKorRMCUtJ+yllIoiY8oFmfFG7xlzsAE76nKEwXNhjPOJIsc7Dv+AUitVt76t+KjIpUP9m98Crn2LQ== +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: - "@jest/types" "^27.2.5" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.2.5" - jest-util "^27.2.5" + jest-message-util "^28.1.3" + jest-util "^28.1.3" slash "^3.0.0" -"@jest/core@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.2.5.tgz#854c314708cee0d892ac4f531b9129f00a21ee69" - integrity sha512-VR7mQ+jykHN4WO3OvusRJMk4xCa2MFLipMS+43fpcRGaYrN1KwMATfVEXif7ccgFKYGy5D1TVXTNE4mGq/KMMA== +"@jest/core@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" + integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== dependencies: - "@jest/console" "^27.2.5" - "@jest/reporters" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/console" "^28.1.3" + "@jest/reporters" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.2.5" - jest-config "^27.2.5" - jest-haste-map "^27.2.5" - jest-message-util "^27.2.5" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.5" - jest-resolve-dependencies "^27.2.5" - jest-runner "^27.2.5" - jest-runtime "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" - jest-watcher "^27.2.5" + graceful-fs "^4.2.9" + jest-changed-files "^28.1.3" + jest-config "^28.1.3" + jest-haste-map "^28.1.3" + jest-message-util "^28.1.3" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.3" + jest-resolve-dependencies "^28.1.3" + jest-runner "^28.1.3" + jest-runtime "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" + jest-watcher "^28.1.3" micromatch "^4.0.4" + pretty-format "^28.1.3" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" @@ -1818,117 +1804,139 @@ dependencies: "@jest/types" "^27.2.5" -"@jest/environment@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.2.5.tgz#b85517ccfcec55690c82c56f5a01a3b30c5e3c84" - integrity sha512-XvUW3q6OUF+54SYFCgbbfCd/BKTwm5b2MGLoc2jINXQLKQDTCS2P2IrpPOtQ08WWZDGzbhAzVhOYta3J2arubg== +"@jest/environment@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" + integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== dependencies: - "@jest/fake-timers" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^27.2.5" + jest-mock "^28.1.3" -"@jest/fake-timers@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.5.tgz#0c7e5762d7bfe6e269e7b49279b097a52a42f0a0" - integrity sha512-ZGUb6jg7BgwY+nmO0TW10bc7z7Hl2G/UTAvmxEyZ/GgNFoa31tY9/cgXmqcxnnZ7o5Xs7RAOz3G1SKIj8IVDlg== +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== dependencies: - "@jest/types" "^27.2.5" - "@sinonjs/fake-timers" "^8.0.1" + jest-get-type "^28.0.2" + +"@jest/expect@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" + integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== + dependencies: + expect "^28.1.3" + jest-snapshot "^28.1.3" + +"@jest/fake-timers@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" + integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== + dependencies: + "@jest/types" "^28.1.3" + "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^27.2.5" - jest-mock "^27.2.5" - jest-util "^27.2.5" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" + jest-util "^28.1.3" -"@jest/globals@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.5.tgz#4115538f98ed6cee4051a90fdbd0854062902099" - integrity sha512-naRI537GM+enFVJQs6DcwGYPn/0vgJNb06zGVbzXfDfe/epDPV73hP1vqO37PqSKDeOXM2KInr6ymYbL1HTP7g== +"@jest/globals@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" + integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== dependencies: - "@jest/environment" "^27.2.5" - "@jest/types" "^27.2.5" - expect "^27.2.5" + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/types" "^28.1.3" -"@jest/reporters@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.5.tgz#65198ed1f3f4449e3f656129764dc6c5bb27ebe3" - integrity sha512-zYuR9fap3Q3mxQ454VWF8I6jYHErh368NwcKHWO2uy2fwByqBzRHkf9j2ekMDM7PaSTWcLBSZyd7NNxR1iHxzQ== +"@jest/reporters@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" + integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/console" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + "@jridgewell/trace-mapping" "^0.3.13" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" + glob "^7.1.3" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.2.5" - jest-resolve "^27.2.5" - jest-util "^27.2.5" - jest-worker "^27.2.5" + istanbul-reports "^3.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + jest-worker "^28.1.3" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" + strip-ansi "^6.0.0" terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + v8-to-istanbul "^9.0.1" -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/source-map@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" + integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== + dependencies: + "@jridgewell/trace-mapping" "^0.3.13" callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" + graceful-fs "^4.2.9" -"@jest/test-result@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.2.5.tgz#e9f73cf6cd5e2cc6eb3105339248dea211f9320e" - integrity sha512-ub7j3BrddxZ0BdSnM5JCF6cRZJ/7j3wgdX0+Dtwhw2Po+HKsELCiXUTvh+mgS4/89mpnU1CPhZxe2mTvuLPJJg== +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== dependencies: - "@jest/console" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.2.5.tgz#ed5ae91c00e623fb719111d58e380395e16cefbb" - integrity sha512-8j8fHZRfnjbbdMitMAGFKaBZ6YqvFRFJlMJzcy3v75edTOqc7RY65S9JpMY6wT260zAcL2sTQRga/P4PglCu3Q== +"@jest/test-sequencer@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" + integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== dependencies: - "@jest/test-result" "^27.2.5" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" - jest-runtime "^27.2.5" + "@jest/test-result" "^28.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + slash "^3.0.0" -"@jest/transform@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.2.5.tgz#02b08862a56dbedddf0ba3c2eae41e049a250e29" - integrity sha512-29lRtAHHYGALbZOx343v0zKmdOg4Sb0rsA1uSv0818bvwRhs3TyElOmTVXlrw0v1ZTqXJCAH/cmoDXimBhQOJQ== +"@jest/transform@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" + integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.2.5" - babel-plugin-istanbul "^6.0.0" + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.3" + "@jridgewell/trace-mapping" "^0.3.13" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" - jest-regex-util "^27.0.6" - jest-util "^27.2.5" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" micromatch "^4.0.4" - pirates "^4.0.1" + pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.1" "@jest/types@^24.9.0": version "24.9.0" @@ -1972,6 +1980,18 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" @@ -2018,6 +2038,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" @@ -2406,6 +2434,11 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== +"@sinclair/typebox@^0.24.1": + version "0.24.20" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" + integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -2423,10 +2456,10 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz#1c1c9a91419f804e59ae8df316a07dd1c3a76b94" - integrity sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew== +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" @@ -2456,22 +2489,6 @@ ramda "^0.26.1" redent "^2.0.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/babel__core@^7.0.0": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - "@types/babel__core@^7.1.14": version "7.1.16" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" @@ -2505,13 +2522,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/babel__traverse@^7.0.4": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== - dependencies: - "@babel/types" "^7.3.0" - "@types/cacheable-request@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" @@ -2537,6 +2547,13 @@ dependencies: "@types/node" "*" +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + "@types/http-cache-semantics@*": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" @@ -2569,13 +2586,13 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^27.0.0": - version "27.0.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" - integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg== +"@types/jest@^28.0.0": + version "28.1.6" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.6.tgz#d6a9cdd38967d2d746861fb5be6b120e38284dd4" + integrity sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ== dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" + jest-matcher-utils "^28.0.0" + pretty-format "^28.0.0" "@types/json-schema@^7.0.3": version "7.0.4" @@ -2700,6 +2717,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + dependencies: + "@types/yargs-parser" "*" + "@typescript-eslint/eslint-plugin@^4.15.0": version "4.15.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz#981b26b4076c62a5a55873fbef3fe98f83360c61" @@ -2824,16 +2848,6 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" - integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== - -abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -2854,46 +2868,21 @@ accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== -acorn@^8.2.4: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== - add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -3147,18 +3136,17 @@ babel-eslint@^10.0.3: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^27.0.0, babel-jest@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.2.5.tgz#6bbbc1bb4200fe0bfd1b1fbcbe02fc62ebed16aa" - integrity sha512-GC9pWCcitBhSuF7H3zl0mftoKizlswaF0E3qi+rPL417wKkCB0d+Sjjb0OfXvxj7gWiBf497ldgRMii68Xz+2g== +babel-jest@^28.0.0, babel-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== dependencies: - "@jest/transform" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/transform" "^28.1.3" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.2.0" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.3" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" babel-plugin-dynamic-import-node@^2.3.3: @@ -3168,25 +3156,25 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz#79f37d43f7e5c4fdc4b2ca3e10cc6cf545626277" - integrity sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw== +babel-plugin-jest-hoist@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" + integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.1.4: @@ -3269,12 +3257,12 @@ babel-preset-fbjs@^3.4.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^27.2.0: - version "27.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz#556bbbf340608fed5670ab0ea0c8ef2449fba885" - integrity sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg== +babel-preset-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== dependencies: - babel-plugin-jest-hoist "^27.2.0" + babel-plugin-jest-hoist "^28.1.3" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -3364,11 +3352,6 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserslist@^4.16.3: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" @@ -4147,23 +4130,6 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - csstype@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" @@ -4188,15 +4154,6 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -4214,7 +4171,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: +debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -4234,11 +4191,6 @@ decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -4268,7 +4220,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -4394,15 +4346,10 @@ diff-sequences@^24.9.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" - integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== - -diff-sequences@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" - integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww== +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== dir-glob@^3.0.1: version "3.0.1" @@ -4433,13 +4380,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - dot-prop@^5.1.0, dot-prop@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" @@ -4472,10 +4412,10 @@ electron-to-chromium@^1.4.84: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.93.tgz#2e87ac28721cb31d472ec2bd04f7daf9f2e13de2" integrity sha512-ywq9Pc5Gwwpv7NG767CtoU8xF3aAUQJjH9//Wy3MBCg4w5JSLbJUq2L8IsCdzPMjvSgxuue9WcVaTOyyxCL0aQ== -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== emoji-regex@^7.0.1: version "7.0.3" @@ -4589,18 +4529,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-prettier@^6.10.1: version "6.11.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" @@ -4804,7 +4732,7 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: +esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -4914,17 +4842,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.2.5.tgz#16154aaa60b4d9a5b0adacfea3e4d6178f4b93fd" - integrity sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA== +expect@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== dependencies: - "@jest/types" "^27.2.5" - ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-regex-util "^27.0.6" + "@jest/expect-utils" "^28.1.3" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" extend-shallow@^2.0.1: version "2.0.1" @@ -5002,7 +4929,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -5162,15 +5089,6 @@ form-data@4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -5388,7 +5306,7 @@ glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5605,13 +5523,6 @@ hosted-git-info@^3.0.6: dependencies: lru-cache "^6.0.0" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -5633,15 +5544,6 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http2-wrapper@^1.0.0-beta.5.2: version "1.0.0-beta.5.2" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" @@ -5650,14 +5552,6 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -5668,7 +5562,7 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5875,7 +5769,7 @@ is-callable@^1.1.4, is-callable@^1.1.5: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== -is-ci@3.0.0, is-ci@^3.0.0: +is-ci@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== @@ -6068,11 +5962,6 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -6190,14 +6079,20 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" istanbul-lib-report@^3.0.0: @@ -6218,92 +6113,92 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.2.5.tgz#9dfd550d158260bcb6fa80aff491f5647f7daeca" - integrity sha512-jfnNJzF89csUKRPKJ4MwZ1SH27wTmX2xiAIHUHrsb/OYd9Jbo4/SXxJ17/nnx6RIifpthk3Y+LEeOk+/dDeGdw== +jest-changed-files@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" + integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== dependencies: - "@jest/types" "^27.2.5" execa "^5.0.0" - throat "^6.0.1" + p-limit "^3.1.0" -jest-circus@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.2.5.tgz#573256a6fb6e447ac2fc7e0ade9375013309037f" - integrity sha512-eyL9IcrAxm3Saq3rmajFCwpaxaRMGJ1KJs+7hlTDinXpJmeR3P02bheM3CYohE7UfwOBmrFMJHjgo/WPcLTM+Q== +jest-circus@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" + integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== dependencies: - "@jest/environment" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.2.5" is-generator-fn "^2.0.0" - jest-each "^27.2.5" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-runtime "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - pretty-format "^27.2.5" + jest-each "^28.1.3" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-runtime "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + p-limit "^3.1.0" + pretty-format "^28.1.3" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.2.5.tgz#88718c8f05f1c0f209152952ecd61afe4c3311bb" - integrity sha512-XzfcOXi5WQrXqFYsDxq5RDOKY4FNIgBgvgf3ZBz4e/j5/aWep5KnsAYH5OFPMdX/TP/LFsYQMRH7kzJUMh6JKg== +jest-cli@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" + integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== dependencies: - "@jest/core" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/core" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" + jest-config "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" prompts "^2.0.1" - yargs "^16.2.0" + yargs "^17.3.1" -jest-config@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.2.5.tgz#c2e4ec6ea2bf4ffd2cae3d927999fe6159cba207" - integrity sha512-QdENtn9b5rIIYGlbDNEcgY9LDL5kcokJnXrp7x8AGjHob/XFqw1Z6p+gjfna2sUulQsQ3ce2Fvntnv+7fKYDhQ== +jest-config@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" + integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.2.5" - "@jest/types" "^27.2.5" - babel-jest "^27.2.5" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.1.3" + "@jest/types" "^28.1.3" + babel-jest "^28.1.3" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.2.5" - jest-environment-jsdom "^27.2.5" - jest-environment-node "^27.2.5" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.2.5" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.5" - jest-runner "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^28.1.3" + jest-environment-node "^28.1.3" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.3" + jest-runner "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" micromatch "^4.0.4" - pretty-format "^27.2.5" + parse-json "^5.2.0" + pretty-format "^28.1.3" + slash "^3.0.0" + strip-json-comments "^3.1.1" jest-diff@^24.0.0, jest-diff@^24.9.0: version "24.9.0" @@ -6315,68 +6210,45 @@ jest-diff@^24.0.0, jest-diff@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-diff@^27.0.0: - version "27.4.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f" - integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.4.0" - jest-get-type "^27.4.0" - pretty-format "^27.4.2" - -jest-diff@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.5.tgz#908f7a6aca5653824516ad30e0a9fd9767e53623" - integrity sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA== +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== dependencies: chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.2.5" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== +jest-docblock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== dependencies: detect-newline "^3.0.0" -jest-each@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.2.5.tgz#378118d516db730b92096a9607b8711165946353" - integrity sha512-HUPWIbJT0bXarRwKu/m7lYzqxR4GM5EhKOsu0z3t0SKtbFN6skQhpAUADM4qFShBXb9zoOuag5lcrR1x/WM+Ag== +jest-each@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" + integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== dependencies: - "@jest/types" "^27.2.5" + "@jest/types" "^28.1.3" chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.2.5" - pretty-format "^27.2.5" - -jest-environment-jsdom@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.2.5.tgz#21de3ad0e89441d961b592ba7561b16241279208" - integrity sha512-QtRpOh/RQKuXniaWcoFE2ElwP6tQcyxHu0hlk32880g0KczdonCs5P1sk5+weu/OVzh5V4Bt1rXuQthI01mBLg== - dependencies: - "@jest/environment" "^27.2.5" - "@jest/fake-timers" "^27.2.5" - "@jest/types" "^27.2.5" - "@types/node" "*" - jest-mock "^27.2.5" - jest-util "^27.2.5" - jsdom "^16.6.0" - -jest-environment-node@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.2.5.tgz#ffa1afb3604c640ec841f044d526c65912e02cef" - integrity sha512-0o1LT4grm7iwrS8fIoLtwJxb/hoa3GsH7pP10P02Jpj7Mi4BXy65u46m89vEM2WfD1uFJQ2+dfDiWZNA2e6bJg== - dependencies: - "@jest/environment" "^27.2.5" - "@jest/fake-timers" "^27.2.5" - "@jest/types" "^27.2.5" + jest-get-type "^28.0.2" + jest-util "^28.1.3" + pretty-format "^28.1.3" + +jest-environment-node@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" + integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^27.2.5" - jest-util "^27.2.5" + jest-mock "^28.1.3" + jest-util "^28.1.3" jest-get-type@^24.9.0: version "24.9.0" @@ -6388,35 +6260,10 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== - -jest-get-type@^27.4.0: - version "27.4.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" - integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== - -jest-haste-map@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.5.tgz#0247b7299250643472bbcf5b4ad85c72d5178e2e" - integrity sha512-pzO+Gw2WLponaSi0ilpzYBE0kuVJstoXBX8YWyUebR8VaXuX4tzzn0Zp23c/WaETo7XYTGv2e8KdnpiskAFMhQ== - dependencies: - "@jest/types" "^27.2.5" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.2.5" - jest-worker "^27.2.5" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== jest-haste-map@^27.3.1: version "27.5.1" @@ -6438,37 +6285,32 @@ jest-haste-map@^27.3.1: optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.2.5.tgz#baaf96c69913c52bce0100000cf0721027c0fd66" - integrity sha512-hdxY9Cm/CjLqu2tXeAoQHPgA4vcqlweVXYOg1+S9FeFdznB9Rti+eEBKDDkmOy9iqr4Xfbq95OkC4NFbXXPCAQ== +jest-haste-map@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.2.5" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/types" "^28.1.3" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.2.5" - is-generator-fn "^2.0.0" - jest-each "^27.2.5" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-runtime "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - pretty-format "^27.2.5" - throat "^6.0.1" - -jest-leak-detector@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.2.5.tgz#e2edc3b37d38e8d9a527e10e456b403c3151b206" - integrity sha512-HYsi3GUR72bYhOGB5C5saF9sPdxGzSjX7soSQS+BqDRysc7sPeBwPbhbuT8DnOpijnKjgwWQ8JqvbmReYnt3aQ== + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" + jest-worker "^28.1.3" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" + integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.2.5" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" jest-matcher-utils@^24.0.0: version "24.9.0" @@ -6480,37 +6322,37 @@ jest-matcher-utils@^24.0.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-matcher-utils@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz#4684faaa8eb32bf15e6edaead6834031897e2980" - integrity sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg== +jest-matcher-utils@^28.0.0, jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== dependencies: chalk "^4.0.0" - jest-diff "^27.2.5" - jest-get-type "^27.0.6" - pretty-format "^27.2.5" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" -jest-message-util@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.5.tgz#ed8b7b0965247bb875a49c1f9b9ab2d1d0820028" - integrity sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ== +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.2.5" + "@jest/types" "^28.1.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.2.5" + pretty-format "^28.1.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.2.5.tgz#0ec38d5ff1e49c4802e7a4a8179e8d7a2fd84de0" - integrity sha512-HiMB3LqE9RzmeMzZARi2Bz3NoymxyP0gCid4y42ca1djffNtYFKgI220aC1VP1mUZ8rbpqZbHZOJ15093bZV/Q== +jest-mock@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" + integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== dependencies: - "@jest/types" "^27.2.5" + "@jest/types" "^28.1.3" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6518,109 +6360,93 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== - jest-regex-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-resolve-dependencies@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.5.tgz#fcd8eca005b3d11ba32da443045c028164b83be1" - integrity sha512-BSjefped31bcvvCh++/pN9ueqqN1n0+p8/58yScuWfklLm2tbPbS9d251vJhAy0ZI2pL/0IaGhOTJrs9Y4FJlg== +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" + integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== dependencies: - "@jest/types" "^27.2.5" - jest-regex-util "^27.0.6" - jest-snapshot "^27.2.5" + jest-regex-util "^28.0.2" + jest-snapshot "^28.1.3" -jest-resolve@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.2.5.tgz#04dadbfc1312a2541f5c199c5011945e9cfe5cef" - integrity sha512-q5irwS3oS73SKy3+FM/HL2T7WJftrk9BRzrXF92f7net5HMlS7lJMg/ZwxLB4YohKqjSsdksEw7n/jvMxV7EKg== +jest-resolve@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" + integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== dependencies: - "@jest/types" "^27.2.5" chalk "^4.0.0" - escalade "^3.1.1" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" jest-pnp-resolver "^1.2.2" - jest-util "^27.2.5" - jest-validate "^27.2.5" + jest-util "^28.1.3" + jest-validate "^28.1.3" resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.2.5.tgz#3d9d0626f351480bb2cffcfbbfac240c0097ebd4" - integrity sha512-n41vw9RLg5TKAnEeJK9d6pGOsBOpwE89XBniK+AD1k26oIIy3V7ogM1scbDjSheji8MUPC9pNgCrZ/FHLVDNgg== +jest-runner@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" + integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== dependencies: - "@jest/console" "^27.2.5" - "@jest/environment" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/console" "^28.1.3" + "@jest/environment" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.2.5" - jest-environment-node "^27.2.5" - jest-haste-map "^27.2.5" - jest-leak-detector "^27.2.5" - jest-message-util "^27.2.5" - jest-resolve "^27.2.5" - jest-runtime "^27.2.5" - jest-util "^27.2.5" - jest-worker "^27.2.5" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.2.5.tgz#d144c3f6889b927aae1e695b63a41a3323b7016b" - integrity sha512-N0WRZ3QszKyZ3Dm27HTBbBuestsSd3Ud5ooVho47XZJ8aSKO/X1Ag8M1dNx9XzfGVRNdB/xCA3lz8MJwIzPLLA== - dependencies: - "@jest/console" "^27.2.5" - "@jest/environment" "^27.2.5" - "@jest/fake-timers" "^27.2.5" - "@jest/globals" "^27.2.5" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" - "@jest/types" "^27.2.5" - "@types/yargs" "^16.0.0" + emittery "^0.10.2" + graceful-fs "^4.2.9" + jest-docblock "^28.1.1" + jest-environment-node "^28.1.3" + jest-haste-map "^28.1.3" + jest-leak-detector "^28.1.3" + jest-message-util "^28.1.3" + jest-resolve "^28.1.3" + jest-runtime "^28.1.3" + jest-util "^28.1.3" + jest-watcher "^28.1.3" + jest-worker "^28.1.3" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" + integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/globals" "^28.1.3" + "@jest/source-map" "^28.1.2" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" - exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" - jest-message-util "^27.2.5" - jest-mock "^27.2.5" - jest-regex-util "^27.0.6" - jest-resolve "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^16.2.0" - -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" jest-serializer@^27.5.1: version "27.5.1" @@ -6630,47 +6456,34 @@ jest-serializer@^27.5.1: "@types/node" "*" graceful-fs "^4.2.9" -jest-snapshot@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.2.5.tgz#8a612fe31e2967f58ad364542198dff61f92ef32" - integrity sha512-2/Jkn+VN6Abwz0llBltZaiJMnL8b1j5Bp/gRIxe9YR3FCEh9qp0TXVV0dcpTGZ8AcJV1SZGQkczewkI9LP5yGw== +jest-snapshot@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" + integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.2.5" - "@jest/types" "^27.2.5" - "@types/babel__traverse" "^7.0.4" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.2.5" - graceful-fs "^4.2.4" - jest-diff "^27.2.5" - jest-get-type "^27.0.6" - jest-haste-map "^27.2.5" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-resolve "^27.2.5" - jest-util "^27.2.5" + expect "^28.1.3" + graceful-fs "^4.2.9" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + jest-haste-map "^28.1.3" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" natural-compare "^1.4.0" - pretty-format "^27.2.5" - semver "^7.3.2" - -jest-util@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.5.tgz#88740c4024d223634a82ce7c2263e8bc6df3b3ba" - integrity sha512-QRhDC6XxISntMzFRd/OQ6TGsjbzA5ONO0tlAj2ElHs155x1aEr0rkYJBEysG6H/gZVH3oGFzCdAB/GA8leh8NQ== - dependencies: - "@jest/types" "^27.2.5" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - picomatch "^2.2.3" + pretty-format "^28.1.3" + semver "^7.3.5" jest-util@^27.5.1: version "27.5.1" @@ -6684,6 +6497,18 @@ jest-util@^27.5.1: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^26.5.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" @@ -6696,29 +6521,30 @@ jest-validate@^26.5.2: leven "^3.1.0" pretty-format "^26.6.2" -jest-validate@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.5.tgz#2d59bf1627d180f395ba58f24599b0ee0efcfbdf" - integrity sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw== +jest-validate@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" + integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== dependencies: - "@jest/types" "^27.2.5" + "@jest/types" "^28.1.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.0.6" + jest-get-type "^28.0.2" leven "^3.1.0" - pretty-format "^27.2.5" + pretty-format "^28.1.3" -jest-watcher@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.2.5.tgz#41cd3e64dc5bea8a4327083d71ba7667be400567" - integrity sha512-umV4qGozg2Dn6DTTtqAh9puPw+DGLK9AQas7+mWjiK8t0fWMpxKg8ZXReZw7L4C88DqorsGUiDgwHNZ+jkVrkQ== +jest-watcher@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: - "@jest/test-result" "^27.2.5" - "@jest/types" "^27.2.5" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.2.5" + emittery "^0.10.2" + jest-util "^28.1.3" string-length "^4.0.1" jest-worker@^27.2.0, jest-worker@^27.5.1: @@ -6730,23 +6556,24 @@ jest-worker@^27.2.0, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.5.tgz#ed42865661959488aa020e8a325df010597c36d4" - integrity sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw== +jest-worker@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.0.0: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.2.5.tgz#7d8a5c8781a160f693beeb7c68e46c16ef948148" - integrity sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ== +jest@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" + integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== dependencies: - "@jest/core" "^27.2.5" + "@jest/core" "^28.1.3" + "@jest/types" "^28.1.3" import-local "^3.0.2" - jest-cli "^27.2.5" + jest-cli "^28.1.3" jetifier@^1.6.2: version "1.6.6" @@ -6807,39 +6634,6 @@ jscodeshift@^0.13.1: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -7013,14 +6807,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -7105,11 +6891,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - lodash.template@^4.0.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -7135,7 +6916,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7214,6 +6995,13 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -7816,11 +7604,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - node-releases@^1.1.71: version "1.1.72" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" @@ -7900,11 +7683,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - ob1@0.70.3: version "0.70.3" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.3.tgz#f48cd5a5abf54b0c423b1b06b6d4ff4d049816cb" @@ -8029,18 +7807,6 @@ open@^6.2.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -8137,6 +7903,13 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -8197,7 +7970,7 @@ parse-github-repo-url@^1.3.0: resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= -parse-json@5.2.0, parse-json@^5.0.0: +parse-json@5.2.0, parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -8240,11 +8013,6 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -8362,14 +8130,7 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pirates@^4.0.5: +pirates@^4.0.4, pirates@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== @@ -8413,11 +8174,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prepend-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-file/-/prepend-file-2.0.0.tgz#2d3256376a64ca3b5640153890a89cadbebaf1a9" @@ -8463,7 +8219,7 @@ pretty-format@^26.5.2, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.0, pretty-format@^27.2.5, pretty-format@^27.3.1, pretty-format@^27.4.2: +pretty-format@^27.0.0, pretty-format@^27.3.1: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== @@ -8472,6 +8228,16 @@ pretty-format@^27.0.0, pretty-format@^27.2.5, pretty-format@^27.3.1, pretty-form ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^28.0.0, pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -8519,11 +8285,6 @@ protocols@^1.1.0, protocols@^1.4.0: resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -8532,7 +8293,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -8597,7 +8358,7 @@ react-devtools-core@4.24.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.2.0: +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -9068,6 +8829,11 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.8.1: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" @@ -9188,13 +8954,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - scheduler@^0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820" @@ -9355,6 +9114,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -9429,7 +9193,15 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.16, source-map-support@^0.5.6: +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.16: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -9591,6 +9363,15 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string.prototype.matchall@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" @@ -9679,6 +9460,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -9774,11 +9562,6 @@ symbol-observable@1.0.4: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" integrity sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0= -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - table@^6.0.9: version "6.7.1" resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" @@ -9867,11 +9650,6 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - through2@^2.0.0, through2@^2.0.1, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -9899,7 +9677,7 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmpl@1.0.x: +tmpl@1.0.5, tmpl@1.0.x: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -9951,29 +9729,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -10025,13 +9780,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -10182,7 +9930,7 @@ universal-user-agent@^6.0.0: resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== -universalify@^0.1.0, universalify@^0.1.2: +universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -10287,14 +10035,14 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-to-istanbul@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" - integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" validate-npm-package-license@^3.0.1: version "3.0.4" @@ -10314,20 +10062,6 @@ vlq@^1.0.0: resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - walker@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -10335,6 +10069,13 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -10342,51 +10083,11 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - whatwg-fetch@^3.0.0: version "3.5.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" - integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^5.0.0" - -whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -10427,7 +10128,7 @@ windows-release@^4.0.0: dependencies: execa "^4.0.2" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -10487,6 +10188,14 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ws@^6.1.4: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -10499,11 +10208,6 @@ ws@^7: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== -ws@^7.4.6: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== - ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" @@ -10514,21 +10218,11 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - xregexp@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" @@ -10566,7 +10260,7 @@ yaml@1.10.2, yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.9, yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@20.2.9, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -10587,6 +10281,11 @@ yargs-parser@^18.1.1, yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -10639,15 +10338,20 @@ yargs@^15.1.0, yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs@^17.3.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" + yargs-parser "^21.0.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 91d2b83d1f04371b67f5355d7ed94ad034fb3e96 Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Tue, 19 Jul 2022 10:44:53 +0200 Subject: [PATCH 04/14] chore: update deps @types for react/react-native (#1013) --- package.json | 6 +++--- yarn.lock | 36 ++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 0a46df2a9..aff747ce7 100644 --- a/package.json +++ b/package.json @@ -38,9 +38,9 @@ "@release-it/conventional-changelog": "^2.0.0", "@testing-library/jest-native": "~4.0.2", "@types/jest": "^28.0.0", - "@types/react": "^17.0.0", - "@types/react-native": "^0.66.6", - "@types/react-test-renderer": "^17.0.0", + "@types/react": "^18.0.0", + "@types/react-native": "^0.69.1", + "@types/react-test-renderer": "^18.0.0", "babel-jest": "^28.0.0", "conventional-changelog-cli": "^2.0.11", "cp-cli": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 647e078d9..4b1c7eed6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2647,28 +2647,28 @@ integrity sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw== "@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/react-native@^0.66.6": - version "0.66.6" - resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.66.6.tgz#08f5b93cca9a50b7d19f353ff2a1ebe1a7c24a79" - integrity sha512-VqC2wN5wNCXqL9/Fve/bI1C+Q8BJlkiF/JOs7Qfw5eeD//nk5Imw4KrB8UiZZ/TPMSXPWYiKvWHiiqgA99L69g== +"@types/react-native@^0.69.1": + version "0.69.3" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.69.3.tgz#344074ef5a8b95815128cceb4d1dc212d115faf3" + integrity sha512-htIxgvwUlYMFKogynsoMeZgxHq9WVEMJGl1UoVdRFctYCR/gSjapN+vKjxX+eo5qh/WSOYdzC/hOEz0cgLkTtQ== dependencies: "@types/react" "*" -"@types/react-test-renderer@^17.0.0": - version "17.0.1" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" - integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== +"@types/react-test-renderer@^18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz#7b7f69ca98821ea5501b21ba24ea7b6139da2243" + integrity sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.0": - version "17.0.36" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.36.tgz#0d81e0e2419e6a8e9ba6af5e3a0608e70835d7d1" - integrity sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw== +"@types/react@*", "@types/react@^18.0.0": + version "18.0.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" + integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -4131,9 +4131,9 @@ crypto-random-string@^2.0.0: integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== csstype@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" - integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== + version "3.1.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== currently-unhandled@^0.4.1: version "0.4.1" From 8ce39f53147b7fd360b65ca7c792d80f6f5a9434 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 11:12:53 +0200 Subject: [PATCH 05/14] chore(deps): bump minimist from 1.2.5 to 1.2.6 (#952) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4b1c7eed6..ea517b052 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7494,9 +7494,9 @@ minimist-options@^3.0.1: is-plain-obj "^1.1.0" minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mixin-deep@^1.2.0: version "1.3.2" From d2269f62b06b5407cfd7cef7af36e48881b03640 Mon Sep 17 00:00:00 2001 From: David Calhoun <438664+dcalhoun@users.noreply.github.com> Date: Tue, 19 Jul 2022 05:56:01 -0400 Subject: [PATCH 06/14] Trigger non-touch events on box-none targets (#906) * Trigger non-touch events on box-none targets Currently, this library disables _all_ events for a target with `pointerEvents="box-none"`. This behavior is counter to how React Native itself functions. This change continues to disable touch events, e.g. `press`, for targets set to "box-none", but allows triggering non-touch events, e.g. `layout`, `touchStart`. * Event triggers target box-none View instead of child This approach more closely aligns with the original failing test case. * Rename events in test description Attempt to better communicate the test is focused on ensuring that touch events continue to trigger (e.g. `touchStart`), but the final event from a touch tap does not trigger. --- src/__tests__/fireEvent.test.tsx | 34 ++++++++++++++++++++++++++++++++ src/fireEvent.ts | 12 ++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/__tests__/fireEvent.test.tsx b/src/__tests__/fireEvent.test.tsx index d5e337688..a8a7dca84 100644 --- a/src/__tests__/fireEvent.test.tsx +++ b/src/__tests__/fireEvent.test.tsx @@ -333,6 +333,40 @@ test('should not fire on box-only pointerEvents View with nested elements', () = expect(handlePress).not.toHaveBeenCalled(); }); +test('should fire non-pointer events on box-none pointerEvents View', () => { + const handleTouchStart = jest.fn(); + + const screen = render( + + {}}> + Trigger + + + ); + + fireEvent(screen.getByTestId('touch-start-view'), 'touchStart'); + expect(handleTouchStart).toHaveBeenCalled(); +}); + +test('should fire non-touch events on box-none pointerEvents View', () => { + const handleLayout = jest.fn(); + + const screen = render( + + {}}> + Trigger + + + ); + + fireEvent(screen.getByTestId('layout-view'), 'layout'); + expect(handleLayout).toHaveBeenCalled(); +}); + test('should pass event up on disabled TouchableOpacity', () => { const handleInnerPress = jest.fn(); const handleOuterPress = jest.fn(); diff --git a/src/fireEvent.ts b/src/fireEvent.ts index 3fa931a6e..0f95381e4 100644 --- a/src/fireEvent.ts +++ b/src/fireEvent.ts @@ -35,12 +35,17 @@ const isPointerEventEnabled = ( return isPointerEventEnabled(element.parent, true); }; +const isTouchEvent = (eventName?: string) => { + return eventName === 'press'; +}; + const isEventEnabled = ( element?: ReactTestInstance, - touchResponder?: ReactTestInstance + touchResponder?: ReactTestInstance, + eventName?: string ) => { if (isTextInput(element)) return element?.props.editable !== false; - if (!isPointerEventEnabled(element)) return false; + if (!isPointerEventEnabled(element) && isTouchEvent(eventName)) return false; const touchStart = touchResponder?.props.onStartShouldSetResponder?.(); const touchMove = touchResponder?.props.onMoveShouldSetResponder?.(); @@ -61,7 +66,8 @@ const findEventHandler = ( : nearestTouchResponder; const handler = getEventHandler(element, eventName); - if (handler && isEventEnabled(element, touchResponder)) return handler; + if (handler && isEventEnabled(element, touchResponder, eventName)) + return handler; if (element.parent === null || element.parent.parent === null) { return null; From f6fe982f6578b81607fb57e9b5419e3fc5d76675 Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Tue, 19 Jul 2022 12:00:03 +0200 Subject: [PATCH 07/14] docs: create document describing act function and related errors (#969) * docs: initial act doc * self code review * docs: self code review * docs: applied type fixes * docs: further updates --- README.md | 4 + website/docs/API.md | 10 ++ website/docs/UnderstandingAct.md | 227 +++++++++++++++++++++++++++++++ website/sidebars.js | 1 + 4 files changed, 242 insertions(+) create mode 100644 website/docs/UnderstandingAct.md diff --git a/README.md b/README.md index 6560a836e..31868d79b 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,10 @@ The [public API](https://callstack.github.io/react-native-testing-library/docs/a - [Migration to 7.0](https://callstack.github.io/react-native-testing-library/docs/migration-v7) - [Migration to 2.0](https://callstack.github.io/react-native-testing-library/docs/migration-v2) +## Troubleshooting + +- [Understanding `act` function](https://callstack.github.io/react-native-testing-library/docs/undestanding-act) + ## Related External Resources - [Real world extensive examples repo](https://github.com/vanGalilea/react-native-testing) diff --git a/website/docs/API.md b/website/docs/API.md index e634f44d6..dc854dde5 100644 --- a/website/docs/API.md +++ b/website/docs/API.md @@ -437,6 +437,10 @@ test('waiting for an Banana to be ready', async () => { In order to properly use `waitFor` you need at least React >=16.9.0 (featuring async `act`) or React Native >=0.61 (which comes with React >=16.9.0). ::: +:::note +If you receive warnings related to `act()` function consult our [Undestanding Act](./UnderstandingAct.md) function document. +::: + ## `waitForElementToBeRemoved` - [`Example code`](https://github.com/callstack/react-native-testing-library/blob/main/src/__tests__/waitForElementToBeRemoved.test.tsx) @@ -470,6 +474,10 @@ You can use any of `getBy`, `getAllBy`, `queryBy` and `queryAllBy` queries for ` In order to properly use `waitForElementToBeRemoved` you need at least React >=16.9.0 (featuring async `act`) or React Native >=0.61 (which comes with React >=16.9.0). ::: +:::note +If you receive warnings related to `act()` function consult our [Undestanding Act](./UnderstandingAct.md) function document. +::: + ## `within`, `getQueriesForElement` - [`Example code`](https://github.com/callstack/react-native-testing-library/blob/main/src/__tests__/within.test.tsx) @@ -528,6 +536,8 @@ expect(submitButtons).toHaveLength(3); // expect 3 elements Useful function to help testing components that use hooks API. By default any `render`, `update`, `fireEvent`, and `waitFor` calls are wrapped by this function, so there is no need to wrap it manually. This method is re-exported from [`react-test-renderer`](https://github.com/facebook/react/blob/main/packages/react-test-renderer/src/ReactTestRenderer.js#L567]). +Consult our [Undestanding Act function](./UnderstandingAct.md) document for more understanding of its intricacies. + ## `renderHook` Defined as: diff --git a/website/docs/UnderstandingAct.md b/website/docs/UnderstandingAct.md new file mode 100644 index 000000000..f0414c76a --- /dev/null +++ b/website/docs/UnderstandingAct.md @@ -0,0 +1,227 @@ +--- +id: understanding-act +title: Understanding Act function +--- + +When writing RNTL tests one of the things that confuses developers the most are cryptic [`act()`](https://reactjs.org/docs/testing-recipes.html#act) function errors logged into console. In this article I will try to build an understanding of the purpose and behaviour of `act()` so you can build your tests with more confidence. + +## The act warnings + +Let’s start with typical `act()` warnings logged to console. There are two kinds of these issues, let’s call the first one the "sync `act()`" warning: + +``` +Warning: An update to Component inside a test was not wrapped in act(...). + +When testing, code that causes React state updates should be wrapped into act(...): + +act(() => { + /* fire events that update state */ +}); +/* assert on the output */ +``` + +The second one relates to async usage of `act` so let’s call it the "async `act`" error: + +``` +Warning: You called act(async () => ...) without await. This could lead to unexpected +testing behaviour, interleaving multiple act calls and mixing their scopes. You should +- await act(async () => ...); +``` + +## Synchronous act + +### Responsibility + +This function is intended only for using in automated tests and works only in development mode. Attempting to use it in production build will throw an error. + +The responsibility for `act` function is to make React renders and updates work in tests in a similar way they work in real application by grouping and executing related units of interaction (e.g. renders, effects, etc) together. + +To showcase that behaviour let make a small experiment. First we define a function component that uses `useEffect` hook in a trivial way. + +```jsx +function TestComponent() { + const [count, setCount] = React.useState(0); + React.useEffect(() => { + setCount((c) => c + 1); + }, []); + + return Count {count}; +} +``` + +In the following tests we will directly use `ReactTestRenderer` instead of RNTL `render` function to render our component for tests. In order to expose familiar queries like `getByText` we will use `within` function from RNTL. + +```jsx +test('render without act', () => { + const renderer = TestRenderer.create(); + + // Bind RNTL queries for root element. + const view = within(renderer.root); + expect(view.getByText('Count 0')).toBeTruthy(); +}); +``` + +When testing without `act` call wrapping rendering call, we see that the assertion runs just after the rendering but before `useEffect`hooks effects are applied. Which is not what we expected in our tests. + +```jsx +test('render with act', () => { + let renderer: ReactTestRenderer; + act(() => { + renderer = TestRenderer.create(); + }); + + // Bind RNTL queries for root element. + const view = within(renderer!.root); + expect(view.getByText('Count 1')).toBeTruthy(); +}); +``` + +When wrapping rendering call with `act` we see that the changes caused by `useEffect` hook have been applied as we would expect. + +### When to use act + +The name `act` comes from [Arrange-Act-Assert](http://wiki.c2.com/?ArrangeActAssert) unit testing pattern. Which means it’s related to part of the test when we execute some actions on the component tree. + +So far we learned that `act` function allows tests to wait for all pending React interactions to be applied before we make our assertions. When using `act` we get guarantee that any state updates will be executed as well as any enqueued effects will be executed. + +Therefore, we should use `act` whenever there is some action that causes element tree to render, particularly: + +- initial render call - `ReactTestRenderer.create` call +- re-rendering of component -`renderer.update` call +- triggering any event handlers that cause component tree render + +Thankfully, for these basic cases RNTL has got you covered as our `render`, `update` and `fireEvent` methods already wrap their calls in sync `act` so that you do not have to do it explicitly. + +Note that `act` calls can be safely nested and internally form a stack of calls. However, overlapping `act` calls, which can be achieved using async version of `act`, [are not supported](https://github.com/facebook/react/blob/main/packages/react/src/ReactAct.js#L161). + +### Implementation + +As of React version of 18.1.0, the `act` implementation is defined in the [ReactAct.js source file](https://github.com/facebook/react/blob/main/packages/react/src/ReactAct.js) inside React repository. This implementation has been fairly stable since React 17.0. + +RNTL exports `act` for convenience of the users as defined in the [act.ts source file](https://github.com/callstack/react-native-testing-library/blob/main/src/act.ts). That file refers to [ReactTestRenderer.js source](https://github.com/facebook/react/blob/ce13860281f833de8a3296b7a3dad9caced102e9/packages/react-test-renderer/src/ReactTestRenderer.js#L52) file from React Test Renderer package, which finally leads to React act implementation in ReactAct.js (already mentioned above). + +## Asynchronous act + +So far we have seen synchronous version of `act` which runs its callback immediately. This can deal with things like synchronous effects or mocks using already resolved promises. However, not all component code is synchronous. Frequently our components or mocks contain some asynchronous behaviours like `setTimeout` calls or network calls. Starting from React 16.9, `act` can also be called in asynchronous mode. In such case `act` implementation checks that the passed callback returns [object resembling promise](https://github.com/facebook/react/blob/ce13860281f833de8a3296b7a3dad9caced102e9/packages/react/src/ReactAct.js#L60). + +### Asynchronous code + +Asynchronous version of `act` also is executed immediately, but the callback is not yet completed because of some asynchronous operations inside. + +Lets look at a simple example with component using `setTimeout` call to simulate asynchronous behaviour: + +```jsx +function TestAsyncComponent() { + const [count, setCount] = React.useState(0); + React.useEffect(() => { + setTimeout(() => { + setCount((c) => c + 1); + }, 50); + }, []); + + return Count {count}; +} +``` + +```jsx +test('render async natively', () => { + const view = render(); + expect(view.getByText('Count 0')).toBeTruthy(); +}); +``` + +If we test our component in a native way without handling its asynchronous behaviour we will end up with sync act warning: + +``` +Warning: An update to TestAsyncComponent inside a test was not wrapped in act(...). + +When testing, code that causes React state updates should be wrapped into act(...): + +act(() => { + /* fire events that update state */ +}); +/* assert on the output */ +``` + +Note that this is not yet the infamous async act warning. It only asks us to wrap our event code with `act` calls. However, this time our immediate state change does not originate from externally triggered events but rather forms an internal part of the component. So how can we apply `act` in such scenario? + +### Solution with fake timers + +First solution is to use Jest's fake timers inside out tests: + +```jsx +test('render with fake timers', () => { + jest.useFakeTimers(); + const view = render(); + + act(() => { + jest.runAllTimers(); + }); + expect(view.getByText('Count 1')).toBeTruthy(); +}); +``` + +That way we can wrap `jest.runAllTimers()` call which triggers the `setTimeout` updates inside an `act` call, hence resolving the act warning. Note that this whole code is synchronous thanks to usage of Jest fake timers. + +### Solution with real timers + +If we wanted to stick with real timers then things get a bit more complex. Let’s start by applying a crude solution of opening async `act()` call for the expected duration of components updates: + +```jsx +test('render with real timers - sleep', async () => { + const view = render(); + await act(async () => { + await sleep(100); // Wait a bit longer than setTimeout in `TestAsyncComponent` + }); + + expect(view.getByText('Count 1')).toBeTruthy(); +}); +``` + +This works correctly as we use an explicit async `act()` call that resolves the console error. However, it relies on our knowledge of exact implementation details which is a bad practice. + +Let’s try more elegant solution using `waitFor` that will wait for our desired state: + +```jsx +test('render with real timers - waitFor', async () => { + const view = render(); + + await waitFor(() => view.getByText('Count 1')); + expect(view.getByText('Count 1')).toBeTruthy(); +}); +``` + +This also works correctly, because `waitFor` call executes async `act()` call internally. + +The above code can be simplified using `findBy` query: + +```jsx +test('render with real timers - findBy', async () => { + const view = render(); + + expect(await view.findByText('Count 1')).toBeTruthy(); +}); +``` + +This also works since `findByText` internally calls `waitFor` which uses async `act()`. + +Note that all of the above examples are async tests using & awaiting async `act()` function call. + +### Async act warning + +If we modify any of the above async tests and remove `await` keyword, then we will trigger the notorious async `act()`warning: + +```jsx +Warning: You called act(async () => ...) without await. This could lead to unexpected +testing behaviour, interleaving multiple act calls and mixing their scopes. You should +- await act(async () => ...); +``` + +React decides to show this error whenever it detects that async `act()`call [has not been awaited](https://github.com/facebook/react/blob/ce13860281f833de8a3296b7a3dad9caced102e9/packages/react/src/ReactAct.js#L93). + +The exact reasons why you might see async `act()` warnings vary, but finally it means that `act()` has been called with callback that returns `Promise`-like object, but it has not been waited on. + +## References + +- [React `act` implementation source](https://github.com/facebook/react/blob/main/packages/react/src/ReactAct.js) +- [React testing recipes: `act()`](https://reactjs.org/docs/testing-recipes.html#act) diff --git a/website/sidebars.js b/website/sidebars.js index cb675e03d..ac4f90137 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -9,6 +9,7 @@ module.exports = { 'how-should-i-query', 'faq', 'eslint-plugin-testing-library', + 'understanding-act', ], Examples: ['react-navigation', 'redux-integration'], }, From 40b6c9a9361cb3a7a4bcd855ed08b2e7a989417e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 12:02:52 +0200 Subject: [PATCH 08/14] chore(deps-dev): bump @babel/cli from 7.15.7 to 7.18.9 (#1014) Bumps [@babel/cli](https://github.com/babel/babel/tree/HEAD/packages/babel-cli) from 7.15.7 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/packages/babel-cli) --- updated-dependencies: - dependency-name: "@babel/cli" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/yarn.lock b/yarn.lock index ea517b052..7195b714f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,17 +10,17 @@ "@jridgewell/trace-mapping" "^0.3.0" "@babel/cli@^7.8.4": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.15.7.tgz#62658abedb786d09c1f70229224b11a65440d7a1" - integrity sha512-YW5wOprO2LzMjoWZ5ZG6jfbY9JnkDxuHDwvnrThnuYtByorova/I0HNXJedrUfwuXFQfYOjcqDA4PU3qlZGZjg== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.18.9.tgz#1fbc8424e5f74ae08bc61ec71609af29287d82d2" + integrity sha512-e7TOtHVrAXBJGNgoROVxqx0mathd01oJGXIDekRfxdrISnRqfM795APwkDtse9GdyPYivjg3iXiko3sF3W7f5Q== dependencies: + "@jridgewell/trace-mapping" "^0.3.8" commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" glob "^7.0.0" make-dir "^2.1.0" slash "^2.0.0" - source-map "^0.5.0" optionalDependencies: "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" @@ -2030,15 +2030,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13": +"@jridgewell/trace-mapping@^0.3.0", "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": version "0.3.14" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== @@ -2046,14 +2038,6 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" From 986a02918d4b13bda9d5db7ee06ad1bcea391c0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 12:03:08 +0200 Subject: [PATCH 09/14] chore(deps): bump plist from 3.0.4 to 3.0.6 (#1011) Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.4 to 3.0.6. - [Release notes](https://github.com/TooTallNate/node-plist/releases) - [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md) - [Commits](https://github.com/TooTallNate/node-plist/commits) --- updated-dependencies: - dependency-name: plist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7195b714f..a8d40a9bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8141,12 +8141,12 @@ pkg-dir@^4.2.0: find-up "^4.0.0" plist@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.4.tgz#a62df837e3aed2bb3b735899d510c4f186019cbe" - integrity sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg== + version "3.0.6" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" + integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== dependencies: base64-js "^1.5.1" - xmlbuilder "^9.0.7" + xmlbuilder "^15.1.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -10202,10 +10202,10 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xmlbuilder@^9.0.7: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== xregexp@^4.3.0: version "4.3.0" From 74318854b9ca04daaa62daca8872c32161c58b54 Mon Sep 17 00:00:00 2001 From: MattAgn <32499425+MattAgn@users.noreply.github.com> Date: Wed, 20 Jul 2022 11:37:04 +0200 Subject: [PATCH 10/14] Organise a11y queries by predicate (#977) * refactor: make Options generic type optionnal in queries * refactor: extract byLabelText queries and its tests * refactor: extract byA11yHint queries and its tests * refactor: extract byRole queries and its tests * refactor: extract byA11yState queries and its tests * refactor: extract byA11yValue queries and its tests * refactor: extract byA11yStates queries and its tests * refactor: harmonize component declaration in queries testsx * refactor: simplify error helpers in queries tests * refactor: make error helpers more explicit * chore: remove now unused makeA11yQueries * refactor: rename AccessibilityStateKeyQueryParam to AccessibilityStateKeys * refactor: rename param in a11yStates * refactor: simplify matchObject * refactor: fix namings in labelText * refactor: fix namings in a11yHint * refactor: fix queryAll namings' * refactor: fix some namings in a11yState * refactor: fix some namings in role * refactor: fix some namings in a11yValue * refactor: extract matchStringValue * refactor: extract matchObject * refactor: extract matchArrayValue * test: add tests for the matchers * refactor: simplify matchArrayValue to make it more explicit * refactor: reorder imports and object keys * refactor: update types * refactor: small tweaks * refactor: tweaks * refactor: clarify matcher naming * refactor: add missing aliases * chore: fix ci timeout * chore: revert jest timeout increase * chore: revert timeout increase * chore: fix ci tests * chore: re-enable disabled tests * chore: reduce jest paralelizaiton * chore: ci tweaks Co-authored-by: Maciej Jastrzebski --- .circleci/config.yml | 2 +- examples/reactnavigation/jest-setup.js | 2 +- jestSetup.js | 1 + package.json | 4 + .../__tests__/matchArrayValue.test.ts | 34 ++ .../matchers/__tests__/matchObject.test.ts | 37 ++ .../__tests__/matchStringValue.test.ts | 15 + src/helpers/matchers/matchArrayProp.ts | 21 + src/helpers/matchers/matchObjectProp.ts | 25 ++ src/helpers/matchers/matchStringProp.ts | 23 + src/queries/__tests__/a11yAPI.test.tsx | 418 ------------------ src/queries/__tests__/a11yState.test.tsx | 98 ++++ src/queries/__tests__/a11yStates.test.tsx | 86 ++++ src/queries/__tests__/a11yValue.test.tsx | 94 ++++ src/queries/__tests__/hintText.test.tsx | 86 ++++ src/queries/__tests__/labelText.test.tsx | 95 ++++ src/queries/__tests__/role.test.tsx | 79 ++++ src/queries/a11yAPI.ts | 261 ----------- src/queries/a11yState.ts | 77 ++++ src/queries/a11yStates.ts | 86 ++++ src/queries/a11yValue.ts | 83 ++++ src/queries/hintText.ts | 95 ++++ src/queries/labelText.ts | 54 +++ src/queries/makeA11yQuery.ts | 96 ---- src/queries/makeQueries.ts | 12 +- src/queries/role.ts | 54 +++ src/screen.ts | 36 +- src/within.ts | 14 +- 28 files changed, 1197 insertions(+), 791 deletions(-) create mode 100644 jestSetup.js create mode 100644 src/helpers/matchers/__tests__/matchArrayValue.test.ts create mode 100644 src/helpers/matchers/__tests__/matchObject.test.ts create mode 100644 src/helpers/matchers/__tests__/matchStringValue.test.ts create mode 100644 src/helpers/matchers/matchArrayProp.ts create mode 100644 src/helpers/matchers/matchObjectProp.ts create mode 100644 src/helpers/matchers/matchStringProp.ts delete mode 100644 src/queries/__tests__/a11yAPI.test.tsx create mode 100644 src/queries/__tests__/a11yState.test.tsx create mode 100644 src/queries/__tests__/a11yStates.test.tsx create mode 100644 src/queries/__tests__/a11yValue.test.tsx create mode 100644 src/queries/__tests__/hintText.test.tsx create mode 100644 src/queries/__tests__/labelText.test.tsx create mode 100644 src/queries/__tests__/role.test.tsx delete mode 100644 src/queries/a11yAPI.ts create mode 100644 src/queries/a11yState.ts create mode 100644 src/queries/a11yStates.ts create mode 100644 src/queries/a11yValue.ts create mode 100644 src/queries/hintText.ts create mode 100644 src/queries/labelText.ts delete mode 100644 src/queries/makeA11yQuery.ts create mode 100644 src/queries/role.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 553eb356a..5867dcf81 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -54,7 +54,7 @@ jobs: steps: - attach_workspace: at: ~/react-native-testing-library - - run: yarn test + - run: yarn test:ci - store_artifacts: path: coverage destination: coverage diff --git a/examples/reactnavigation/jest-setup.js b/examples/reactnavigation/jest-setup.js index 161b6bc2e..baa4ed853 100644 --- a/examples/reactnavigation/jest-setup.js +++ b/examples/reactnavigation/jest-setup.js @@ -11,4 +11,4 @@ jest.mock('react-native-reanimated', () => { }); // Silence the warning: Animated: `useNativeDriver` is not supported because the native animated module is missing -jest.mock('react-native/Libraries/Animated/src/NativeAnimatedHelper'); +jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper'); diff --git a/jestSetup.js b/jestSetup.js new file mode 100644 index 000000000..7060fd312 --- /dev/null +++ b/jestSetup.js @@ -0,0 +1 @@ +jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper'); diff --git a/package.json b/package.json index aff747ce7..b7cff3244 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "scripts": { "clean": "del build", "test": "jest", + "test:ci": "jest --maxWorkers=2", "typecheck": "tsc", "flow": "flow", "copy-flowtypes": "cp typings/index.flow.js build", @@ -83,6 +84,9 @@ }, "jest": { "preset": "./jest-preset", + "setupFiles": [ + "./jestSetup.js" + ], "testPathIgnorePatterns": [ "timerUtils", "examples/" diff --git a/src/helpers/matchers/__tests__/matchArrayValue.test.ts b/src/helpers/matchers/__tests__/matchArrayValue.test.ts new file mode 100644 index 000000000..c9141916b --- /dev/null +++ b/src/helpers/matchers/__tests__/matchArrayValue.test.ts @@ -0,0 +1,34 @@ +import { matchArrayProp } from '../matchArrayProp'; + +test('returns true given 2 identical prop and matcher', () => { + expect(matchArrayProp(['banana'], ['banana'])).toEqual(true); + expect(matchArrayProp(['banana', 'apple'], ['banana', 'apple'])).toEqual( + true + ); +}); + +test('returns true when the prop contains all the values of the matcher', () => { + expect( + matchArrayProp(['banana', 'apple', 'orange'], ['banana', 'orange']) + ).toEqual(true); +}); + +test('returns false when the prop does not contain all the values of the matcher', () => { + expect( + matchArrayProp(['banana', 'apple', 'orange'], ['banana', 'pear']) + ).toEqual(false); +}); + +test('returns false when prop is undefined', () => { + expect(matchArrayProp(undefined, ['banana'])).toEqual(false); +}); + +test('returns false when the matcher is an empty list', () => { + expect(matchArrayProp(['banana'], [])).toEqual(false); +}); + +test('returns false given 2 different prop and matchers', () => { + expect(matchArrayProp(['banana', 'apple'], ['banana', 'orange'])).toEqual( + false + ); +}); diff --git a/src/helpers/matchers/__tests__/matchObject.test.ts b/src/helpers/matchers/__tests__/matchObject.test.ts new file mode 100644 index 000000000..a87ed52b0 --- /dev/null +++ b/src/helpers/matchers/__tests__/matchObject.test.ts @@ -0,0 +1,37 @@ +import { matchObjectProp } from '../matchObjectProp'; + +test('returns true given 2 identical objects', () => { + expect(matchObjectProp({ fruit: 'banana' }, { fruit: 'banana' })).toEqual( + true + ); + expect( + matchObjectProp( + { fruit: 'banana', isRipe: true }, + { fruit: 'banana', isRipe: true } + ) + ).toEqual(true); +}); + +test('returns false when one of the param is an empty object', () => { + expect(matchObjectProp({}, { fruit: 'banana' })).toEqual(false); + expect(matchObjectProp({ fruit: 'banana' }, {})).toEqual(false); +}); + +test('returns false given an undefined prop', () => { + expect(matchObjectProp(undefined, { fruit: 'banana' })).toEqual(false); +}); + +test('returns false given 2 different non empty objects', () => { + expect(matchObjectProp({ fruit: 'banana' }, { fruits: 'banana' })).toEqual( + false + ); + expect(matchObjectProp({ fruit: 'banana' }, { fruit: 'orange' })).toEqual( + false + ); + expect( + matchObjectProp( + { fruit: 'banana', isRipe: true }, + { fruit: 'banana', ripe: true } + ) + ).toEqual(false); +}); diff --git a/src/helpers/matchers/__tests__/matchStringValue.test.ts b/src/helpers/matchers/__tests__/matchStringValue.test.ts new file mode 100644 index 000000000..a34b00d00 --- /dev/null +++ b/src/helpers/matchers/__tests__/matchStringValue.test.ts @@ -0,0 +1,15 @@ +import { matchStringProp } from '../matchStringProp'; + +test.each` + prop | matcher | expectedResult + ${'hey'} | ${'hey'} | ${true} + ${'hey'} | ${/hey/} | ${true} + ${'hey'} | ${'heyyyy'} | ${false} + ${'hey'} | ${/heyyy/} | ${false} + ${undefined} | ${'hey'} | ${false} +`( + 'returns $expectedResult given prop $prop and matcher $matcher', + ({ prop, matcher, expectedResult }) => { + expect(matchStringProp(prop, matcher)).toEqual(expectedResult); + } +); diff --git a/src/helpers/matchers/matchArrayProp.ts b/src/helpers/matchers/matchArrayProp.ts new file mode 100644 index 000000000..bdd2cbcf8 --- /dev/null +++ b/src/helpers/matchers/matchArrayProp.ts @@ -0,0 +1,21 @@ +/** + * Matches whether given array prop contains the given value, or all given values. + * + * @param prop - The array prop to match. + * @param matcher - The value or values to be included in the array. + * @returns Whether the array prop contains the given value, or all given values. + */ +export function matchArrayProp( + prop: Array | undefined, + matcher: string | Array +): boolean { + if (!prop || matcher.length === 0) { + return false; + } + + if (typeof matcher === 'string') { + return prop.includes(matcher); + } + + return matcher.every((e) => prop.includes(e)); +} diff --git a/src/helpers/matchers/matchObjectProp.ts b/src/helpers/matchers/matchObjectProp.ts new file mode 100644 index 000000000..6373c25ed --- /dev/null +++ b/src/helpers/matchers/matchObjectProp.ts @@ -0,0 +1,25 @@ +/** + * check that each key value pair of the objects match + * BE CAREFUL it works only for 1 level deep key value pairs + * won't work for nested objects + */ + +/** + * Matches whether given object prop contains all key/value pairs. + * @param prop - The object prop to match. + * @param matcher - The key/value pairs to be included in the object. + * @returns Whether the object prop contains all key/value pairs. + */ +export function matchObjectProp>( + prop: T | undefined, + matcher: T +): boolean { + if (!prop || Object.keys(matcher).length === 0) { + return false; + } + + return ( + Object.keys(prop).length !== 0 && + Object.keys(matcher).every((key) => prop[key] === matcher[key]) + ); +} diff --git a/src/helpers/matchers/matchStringProp.ts b/src/helpers/matchers/matchStringProp.ts new file mode 100644 index 000000000..4f63de1a6 --- /dev/null +++ b/src/helpers/matchers/matchStringProp.ts @@ -0,0 +1,23 @@ +import { TextMatch } from '../../matches'; + +/** + * Matches the given string property again string or regex matcher. + * + * @param prop - The string prop to match. + * @param matcher - The string or regex to match. + * @returns - Whether the string prop matches the given string or regex. + */ +export function matchStringProp( + prop: string | undefined, + matcher: TextMatch +): boolean { + if (!prop) { + return false; + } + + if (typeof matcher === 'string') { + return prop === matcher; + } + + return prop.match(matcher) != null; +} diff --git a/src/queries/__tests__/a11yAPI.test.tsx b/src/queries/__tests__/a11yAPI.test.tsx deleted file mode 100644 index b195b13ad..000000000 --- a/src/queries/__tests__/a11yAPI.test.tsx +++ /dev/null @@ -1,418 +0,0 @@ -import * as React from 'react'; -import { TouchableOpacity, Text } from 'react-native'; -import { render } from '../..'; - -const BUTTON_LABEL = 'cool button'; -const BUTTON_HINT = 'click this button'; -const TEXT_LABEL = 'cool text'; -const TEXT_HINT = 'static text'; -// Little hack to make all the methods happy with type -const NO_MATCHES_TEXT: any = 'not-existent-element'; -const FOUND_TWO_INSTANCES = 'Expected 1 but found 2 instances'; - -const getNoInstancesFoundMessage = ( - name: string, - value: string = NO_MATCHES_TEXT, - includeQuotes: boolean = true -) => { - const quote = includeQuotes ? '"' : ''; - return `No instances found with ${name} ${quote}${value}${quote}`; -}; - -const Typography = ({ children, ...rest }: any) => { - return {children}; -}; - -const waitForOptions = { timeout: 10 }; - -class Button extends React.Component { - render() { - return ( - - - {this.props.children} - - - ); - } -} - -function Section() { - return ( - <> - - Title - - - - ); -} - -test('getByLabelText, queryByLabelText, findByLabelText', async () => { - const { getByLabelText, queryByLabelText, findByLabelText } = render( -
- ); - - expect(getByLabelText(BUTTON_LABEL).props.accessibilityLabel).toEqual( - BUTTON_LABEL - ); - const button = queryByLabelText(/button/g); - expect(button?.props.accessibilityLabel).toEqual(BUTTON_LABEL); - - expect(() => getByLabelText(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityLabel') - ); - expect(queryByLabelText(NO_MATCHES_TEXT)).toBeNull(); - - expect(() => getByLabelText(TEXT_LABEL)).toThrow(FOUND_TWO_INSTANCES); - expect(() => queryByLabelText(TEXT_LABEL)).toThrow(FOUND_TWO_INSTANCES); - - const asyncButton = await findByLabelText(BUTTON_LABEL); - expect(asyncButton.props.accessibilityLabel).toEqual(BUTTON_LABEL); - await expect( - findByLabelText(NO_MATCHES_TEXT, waitForOptions) - ).rejects.toThrow(getNoInstancesFoundMessage('accessibilityLabel')); - - await expect(findByLabelText(TEXT_LABEL, waitForOptions)).rejects.toThrow( - FOUND_TWO_INSTANCES - ); -}); - -test('getAllByLabelText, queryAllByLabelText, findAllByLabelText', async () => { - const { getAllByLabelText, queryAllByLabelText, findAllByLabelText } = render( -
- ); - - expect(getAllByLabelText(TEXT_LABEL)).toHaveLength(2); - expect(queryAllByLabelText(/cool/g)).toHaveLength(3); - - expect(() => getAllByLabelText(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityLabel') - ); - expect(queryAllByLabelText(NO_MATCHES_TEXT)).toEqual([]); - - await expect(findAllByLabelText(TEXT_LABEL)).resolves.toHaveLength(2); - await expect(findAllByLabelText(NO_MATCHES_TEXT)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityLabel') - ); -}); - -test('getByA11yHint, queryByA11yHint, findByA11yHint', async () => { - const { getByA11yHint, queryByA11yHint, findByA11yHint } = render( -
- ); - - expect(getByA11yHint(BUTTON_HINT).props.accessibilityHint).toEqual( - BUTTON_HINT - ); - const button = queryByA11yHint(/button/g); - expect(button?.props.accessibilityHint).toEqual(BUTTON_HINT); - - expect(() => getByA11yHint(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityHint') - ); - expect(queryByA11yHint(NO_MATCHES_TEXT)).toBeNull(); - - expect(() => getByA11yHint(TEXT_HINT)).toThrow(FOUND_TWO_INSTANCES); - expect(() => queryByA11yHint(TEXT_HINT)).toThrow(FOUND_TWO_INSTANCES); - - const asyncButton = await findByA11yHint(BUTTON_HINT); - expect(asyncButton.props.accessibilityHint).toEqual(BUTTON_HINT); - await expect(findByA11yHint(NO_MATCHES_TEXT, waitForOptions)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityHint') - ); - await expect(findByA11yHint(TEXT_HINT, waitForOptions)).rejects.toThrow( - FOUND_TWO_INSTANCES - ); -}); - -test('getAllByA11yHint, queryAllByA11yHint, findAllByA11yHint', async () => { - const { getAllByA11yHint, queryAllByA11yHint, findAllByA11yHint } = render( -
- ); - - expect(getAllByA11yHint(TEXT_HINT)).toHaveLength(2); - expect(queryAllByA11yHint(/static/g)).toHaveLength(2); - - expect(() => getAllByA11yHint(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityHint') - ); - expect(queryAllByA11yHint(NO_MATCHES_TEXT)).toEqual([]); - - await expect(findAllByA11yHint(TEXT_HINT)).resolves.toHaveLength(2); - await expect(findAllByA11yHint(NO_MATCHES_TEXT)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityHint') - ); -}); - -test('getByRole, queryByRole, findByRole', async () => { - const { getByRole, queryByRole, findByRole } = render(
); - - expect(getByRole('button').props.accessibilityRole).toEqual('button'); - const button = queryByRole(/button/g); - expect(button?.props.accessibilityRole).toEqual('button'); - - expect(() => getByRole(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityRole') - ); - expect(queryByRole(NO_MATCHES_TEXT)).toBeNull(); - - expect(() => getByRole('link')).toThrow(FOUND_TWO_INSTANCES); - expect(() => queryByRole('link')).toThrow(FOUND_TWO_INSTANCES); - - const asyncButton = await findByRole('button'); - expect(asyncButton.props.accessibilityRole).toEqual('button'); - await expect(findByRole(NO_MATCHES_TEXT, waitForOptions)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityRole') - ); - await expect(findByRole('link')).rejects.toThrow(FOUND_TWO_INSTANCES); -}); - -test('getAllByRole, queryAllByRole, findAllByRole', async () => { - const { getAllByRole, queryAllByRole, findAllByRole } = render(
); - - expect(getAllByRole('link')).toHaveLength(2); - expect(queryAllByRole(/ink/g)).toHaveLength(2); - - expect(() => getAllByRole(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityRole') - ); - expect(queryAllByRole(NO_MATCHES_TEXT)).toEqual([]); - - await expect(findAllByRole('link')).resolves.toHaveLength(2); - await expect(findAllByRole(NO_MATCHES_TEXT, waitForOptions)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityRole') - ); -}); - -// TODO: accessibilityStates was removed from RN 0.62 -test.skip('getByA11yStates, queryByA11yStates', () => { - const { getByA11yStates, queryByA11yStates } = render(
); - - expect(getByA11yStates('disabled').props.accessibilityStates).toEqual([ - 'selected', - 'disabled', - ]); - const disabled = queryByA11yStates(['disabled']); - expect(disabled?.props.accessibilityStates).toMatchObject([ - 'selected', - 'disabled', - ]); - const disabledSelected = queryByA11yStates(['selected', 'disabled']); - expect(disabledSelected?.props.accessibilityStates).toEqual([ - 'selected', - 'disabled', - ]); - - expect(() => getByA11yStates(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityStates') - ); - expect(queryByA11yStates(NO_MATCHES_TEXT)).toBeNull(); - expect(queryByA11yStates([])).toBeNull(); - - expect(() => getByA11yStates('selected')).toThrow(FOUND_TWO_INSTANCES); - expect(() => queryByA11yStates('selected')).toThrow(FOUND_TWO_INSTANCES); -}); - -// TODO: accessibilityStates was removed from RN 0.62 -test.skip('getAllByA11yStates, queryAllByA11yStates', () => { - const { getAllByA11yStates, queryAllByA11yStates } = render(
); - - expect(getAllByA11yStates('selected')).toHaveLength(3); - expect(queryAllByA11yStates(['selected'])).toHaveLength(3); - - expect(() => getAllByA11yStates([])).toThrow( - getNoInstancesFoundMessage('accessibilityStates') - ); - expect(queryAllByA11yStates(NO_MATCHES_TEXT)).toEqual([]); -}); - -test('getByA11yState, queryByA11yState, findByA11yState', async () => { - const { getByA11yState, queryByA11yState, findByA11yState } = render( -
- ); - - expect(getByA11yState({ selected: true }).props.accessibilityState).toEqual({ - selected: true, - expanded: false, - }); - expect( - queryByA11yState({ selected: true })?.props.accessibilityState - ).toEqual({ - selected: true, - expanded: false, - }); - - expect(() => getByA11yState({ disabled: true })).toThrow( - getNoInstancesFoundMessage( - 'accessibilityState', - '{"disabled": true}', - false - ) - ); - expect(queryByA11yState({ disabled: true })).toEqual(null); - - expect(() => getByA11yState({ expanded: false })).toThrow( - FOUND_TWO_INSTANCES - ); - expect(() => queryByA11yState({ expanded: false })).toThrow( - FOUND_TWO_INSTANCES - ); - - const asyncButton = await findByA11yState({ selected: true }); - expect(asyncButton.props.accessibilityState).toEqual({ - selected: true, - expanded: false, - }); - await expect( - findByA11yState({ disabled: true }, waitForOptions) - ).rejects.toThrow( - getNoInstancesFoundMessage( - 'accessibilityState', - '{"disabled": true}', - false - ) - ); - await expect( - findByA11yState({ expanded: false }, waitForOptions) - ).rejects.toThrow(FOUND_TWO_INSTANCES); -}); - -test('getAllByA11yState, queryAllByA11yState, findAllByA11yState', async () => { - const { getAllByA11yState, queryAllByA11yState, findAllByA11yState } = render( -
- ); - - expect(getAllByA11yState({ selected: true })).toHaveLength(1); - expect(queryAllByA11yState({ selected: true })).toHaveLength(1); - - expect(() => getAllByA11yState({ disabled: true })).toThrow( - getNoInstancesFoundMessage( - 'accessibilityState', - '{"disabled": true}', - false - ) - ); - expect(queryAllByA11yState({ disabled: true })).toEqual([]); - - expect(getAllByA11yState({ expanded: false })).toHaveLength(2); - expect(queryAllByA11yState({ expanded: false })).toHaveLength(2); - - await expect(findAllByA11yState({ selected: true })).resolves.toHaveLength(1); - await expect( - findAllByA11yState({ disabled: true }, waitForOptions) - ).rejects.toThrow( - getNoInstancesFoundMessage( - 'accessibilityState', - '{"disabled": true}', - false - ) - ); - await expect(findAllByA11yState({ expanded: false })).resolves.toHaveLength( - 2 - ); -}); - -test('getByA11yValue, queryByA11yValue, findByA11yValue', async () => { - const { getByA11yValue, queryByA11yValue, findByA11yValue } = render( -
- ); - - expect(getByA11yValue({ min: 40 }).props.accessibilityValue).toEqual({ - min: 40, - max: 60, - }); - expect(queryByA11yValue({ min: 40 })?.props.accessibilityValue).toEqual({ - min: 40, - max: 60, - }); - - expect(() => getByA11yValue({ min: 50 })).toThrow( - getNoInstancesFoundMessage('accessibilityValue', '{"min": 50}', false) - ); - expect(queryByA11yValue({ min: 50 })).toEqual(null); - - expect(() => getByA11yValue({ max: 60 })).toThrow(FOUND_TWO_INSTANCES); - expect(() => queryByA11yValue({ max: 60 })).toThrow(FOUND_TWO_INSTANCES); - - const asyncElement = await findByA11yValue({ min: 40 }); - expect(asyncElement.props.accessibilityValue).toEqual({ - min: 40, - max: 60, - }); - await expect(findByA11yValue({ min: 50 }, waitForOptions)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityValue', '{"min": 50}', false) - ); - await expect(findByA11yValue({ max: 60 }, waitForOptions)).rejects.toThrow( - FOUND_TWO_INSTANCES - ); -}); - -test('getAllByA11yValue, queryAllByA11yValue, findAllByA11yValue', async () => { - const { getAllByA11yValue, queryAllByA11yValue, findAllByA11yValue } = render( -
- ); - - expect(getAllByA11yValue({ min: 40 })).toHaveLength(1); - expect(queryAllByA11yValue({ min: 40 })).toHaveLength(1); - - expect(() => getAllByA11yValue({ min: 50 })).toThrow( - getNoInstancesFoundMessage('accessibilityValue', '{"min": 50}', false) - ); - expect(queryAllByA11yValue({ min: 50 })).toEqual([]); - - expect(queryAllByA11yValue({ max: 60 })).toHaveLength(2); - expect(getAllByA11yValue({ max: 60 })).toHaveLength(2); - - await expect(findAllByA11yValue({ min: 40 })).resolves.toHaveLength(1); - await expect(findAllByA11yValue({ min: 50 }, waitForOptions)).rejects.toThrow( - getNoInstancesFoundMessage('accessibilityValue', '{"min": 50}', false) - ); - await expect(findAllByA11yValue({ max: 60 })).resolves.toHaveLength(2); -}); - -test('a11y hint queries have aliases', () => { - const { - getByA11yHint, - getByHintText, - queryByA11yHint, - queryByHintText, - findByA11yHint, - findByHintText, - getAllByA11yHint, - getAllByHintText, - queryAllByA11yHint, - queryAllByHintText, - findAllByA11yHint, - findAllByHintText, - } = render(
); - - // Assert that query aliases are referencing the same function - expect(getByA11yHint).toBe(getByHintText); - expect(queryByA11yHint).toBe(queryByHintText); - expect(findByA11yHint).toBe(findByHintText); - expect(getAllByA11yHint).toBe(getAllByHintText); - expect(queryAllByA11yHint).toBe(queryAllByHintText); - expect(findAllByA11yHint).toBe(findAllByHintText); -}); diff --git a/src/queries/__tests__/a11yState.test.tsx b/src/queries/__tests__/a11yState.test.tsx new file mode 100644 index 000000000..c15c078b4 --- /dev/null +++ b/src/queries/__tests__/a11yState.test.tsx @@ -0,0 +1,98 @@ +import * as React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { render } from '../..'; + +const TEXT_LABEL = 'cool text'; + +const getMultipleInstancesFoundMessage = (value: string) => { + return `Found multiple elements with accessibilityState: ${value}`; +}; + +const getNoInstancesFoundMessage = (value: string) => { + return `Unable to find an element with accessibilityState: ${value}`; +}; + +const Typography = ({ children, ...rest }: any) => { + return {children}; +}; + +const Button = ({ children }: { children: React.ReactNode }) => ( + + + {children} + + +); + +const Section = () => ( + <> + Title + + +); + +test('getByA11yState, queryByA11yState, findByA11yState', async () => { + const { getByA11yState, queryByA11yState, findByA11yState } = render( +
+ ); + + expect(getByA11yState({ selected: true }).props.accessibilityState).toEqual({ + selected: true, + expanded: false, + }); + expect( + queryByA11yState({ selected: true })?.props.accessibilityState + ).toEqual({ + selected: true, + expanded: false, + }); + + expect(() => getByA11yState({ disabled: true })).toThrow( + getNoInstancesFoundMessage('{"disabled":true}') + ); + expect(queryByA11yState({ disabled: true })).toEqual(null); + + expect(() => getByA11yState({ expanded: false })).toThrow( + getMultipleInstancesFoundMessage('{"expanded":false}') + ); + expect(() => queryByA11yState({ expanded: false })).toThrow( + getMultipleInstancesFoundMessage('{"expanded":false}') + ); + + const asyncButton = await findByA11yState({ selected: true }); + expect(asyncButton.props.accessibilityState).toEqual({ + selected: true, + expanded: false, + }); + await expect(findByA11yState({ disabled: true })).rejects.toThrow( + getNoInstancesFoundMessage('{"disabled":true}') + ); + await expect(findByA11yState({ expanded: false })).rejects.toThrow( + getMultipleInstancesFoundMessage('{"expanded":false}') + ); +}); + +test('getAllByA11yState, queryAllByA11yState, findAllByA11yState', async () => { + const { getAllByA11yState, queryAllByA11yState, findAllByA11yState } = render( +
+ ); + + expect(getAllByA11yState({ selected: true })).toHaveLength(1); + expect(queryAllByA11yState({ selected: true })).toHaveLength(1); + + expect(() => getAllByA11yState({ disabled: true })).toThrow( + getNoInstancesFoundMessage('{"disabled":true}') + ); + expect(queryAllByA11yState({ disabled: true })).toEqual([]); + + expect(getAllByA11yState({ expanded: false })).toHaveLength(2); + expect(queryAllByA11yState({ expanded: false })).toHaveLength(2); + + await expect(findAllByA11yState({ selected: true })).resolves.toHaveLength(1); + await expect(findAllByA11yState({ disabled: true })).rejects.toThrow( + getNoInstancesFoundMessage('{"disabled":true}') + ); + await expect(findAllByA11yState({ expanded: false })).resolves.toHaveLength( + 2 + ); +}); diff --git a/src/queries/__tests__/a11yStates.test.tsx b/src/queries/__tests__/a11yStates.test.tsx new file mode 100644 index 000000000..7a01b0725 --- /dev/null +++ b/src/queries/__tests__/a11yStates.test.tsx @@ -0,0 +1,86 @@ +import * as React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { render } from '../..'; + +const TEXT_LABEL = 'cool text'; +// Little hack to make all the methods happy with type +const NO_MATCHES_TEXT: any = 'not-existent-element'; + +const getMultipleInstancesFoundMessage = (value: string) => { + return `Found multiple elements with accessibilityStates: ${value}`; +}; + +const getNoInstancesFoundMessage = (value: string) => { + return `Unable to find an element with accessibilityStates: ${value}`; +}; + +const Typography = ({ children, ...rest }: any) => { + return {children}; +}; + +const Button = ({ children }: { children: React.ReactNode }) => ( + + {children} + +); + +const Section = () => ( + <> + + Title + + + +); + +// TODO: accessibilityStates was removed from RN 0.62 +test.skip('getByA11yStates, queryByA11yStates', () => { + const { getByA11yStates, queryByA11yStates } = render(
); + + expect(getByA11yStates('disabled').props.accessibilityStates).toEqual([ + 'selected', + 'disabled', + ]); + const disabled = queryByA11yStates(['disabled']); + expect(disabled?.props.accessibilityStates).toMatchObject([ + 'selected', + 'disabled', + ]); + const disabledSelected = queryByA11yStates(['selected', 'disabled']); + expect(disabledSelected?.props.accessibilityStates).toEqual([ + 'selected', + 'disabled', + ]); + + expect(() => getByA11yStates(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage('accessibilityStates') + ); + expect(queryByA11yStates(NO_MATCHES_TEXT)).toBeNull(); + expect(queryByA11yStates([])).toBeNull(); + + expect(() => getByA11yStates('selected')).toThrow( + getMultipleInstancesFoundMessage('["selected"]') + ); + expect(() => queryByA11yStates('selected')).toThrow( + getMultipleInstancesFoundMessage('["selected"]') + ); +}); + +// TODO: accessibilityStates was removed from RN 0.62 +test.skip('getAllByA11yStates, queryAllByA11yStates', () => { + const { getAllByA11yStates, queryAllByA11yStates } = render(
); + + expect(getAllByA11yStates('selected')).toHaveLength(3); + expect(queryAllByA11yStates(['selected'])).toHaveLength(3); + + expect(() => getAllByA11yStates([])).toThrow( + getNoInstancesFoundMessage('[]') + ); + expect(queryAllByA11yStates(NO_MATCHES_TEXT)).toEqual([]); +}); diff --git a/src/queries/__tests__/a11yValue.test.tsx b/src/queries/__tests__/a11yValue.test.tsx new file mode 100644 index 000000000..ddb4201a4 --- /dev/null +++ b/src/queries/__tests__/a11yValue.test.tsx @@ -0,0 +1,94 @@ +import * as React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { render } from '../..'; + +const TEXT_LABEL = 'cool text'; + +const getMultipleInstancesFoundMessage = (value: string) => { + return `Found multiple elements with accessibilityValue: ${value}`; +}; + +const getNoInstancesFoundMessage = (value: string) => { + return `Unable to find an element with accessibilityValue: ${value}`; +}; + +const Typography = ({ children, ...rest }: any) => { + return {children}; +}; + +const Button = ({ children }: { children: React.ReactNode }) => ( + + + {children} + + +); + +const Section = () => ( + <> + Title + + +); + +test('getByA11yValue, queryByA11yValue, findByA11yValue', async () => { + const { getByA11yValue, queryByA11yValue, findByA11yValue } = render( +
+ ); + + expect(getByA11yValue({ min: 40 }).props.accessibilityValue).toEqual({ + min: 40, + max: 60, + }); + expect(queryByA11yValue({ min: 40 })?.props.accessibilityValue).toEqual({ + min: 40, + max: 60, + }); + + expect(() => getByA11yValue({ min: 50 })).toThrow( + getNoInstancesFoundMessage('{"min":50}') + ); + expect(queryByA11yValue({ min: 50 })).toEqual(null); + + expect(() => getByA11yValue({ max: 60 })).toThrow( + getMultipleInstancesFoundMessage('{"max":60}') + ); + expect(() => queryByA11yValue({ max: 60 })).toThrow( + getMultipleInstancesFoundMessage('{"max":60}') + ); + + const asyncElement = await findByA11yValue({ min: 40 }); + expect(asyncElement.props.accessibilityValue).toEqual({ + min: 40, + max: 60, + }); + await expect(findByA11yValue({ min: 50 })).rejects.toThrow( + getNoInstancesFoundMessage('{"min":50}') + ); + await expect(findByA11yValue({ max: 60 })).rejects.toThrow( + getMultipleInstancesFoundMessage('{"max":60}') + ); +}); + +test('getAllByA11yValue, queryAllByA11yValue, findAllByA11yValue', async () => { + const { getAllByA11yValue, queryAllByA11yValue, findAllByA11yValue } = render( +
+ ); + + expect(getAllByA11yValue({ min: 40 })).toHaveLength(1); + expect(queryAllByA11yValue({ min: 40 })).toHaveLength(1); + + expect(() => getAllByA11yValue({ min: 50 })).toThrow( + getNoInstancesFoundMessage('{"min":50}') + ); + expect(queryAllByA11yValue({ min: 50 })).toEqual([]); + + expect(queryAllByA11yValue({ max: 60 })).toHaveLength(2); + expect(getAllByA11yValue({ max: 60 })).toHaveLength(2); + + await expect(findAllByA11yValue({ min: 40 })).resolves.toHaveLength(1); + await expect(findAllByA11yValue({ min: 50 })).rejects.toThrow( + getNoInstancesFoundMessage('{"min":50}') + ); + await expect(findAllByA11yValue({ max: 60 })).resolves.toHaveLength(2); +}); diff --git a/src/queries/__tests__/hintText.test.tsx b/src/queries/__tests__/hintText.test.tsx new file mode 100644 index 000000000..6e5ddb5e7 --- /dev/null +++ b/src/queries/__tests__/hintText.test.tsx @@ -0,0 +1,86 @@ +import * as React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { render } from '../..'; + +const BUTTON_HINT = 'click this button'; +const TEXT_HINT = 'static text'; +// Little hack to make all the methods happy with type +const NO_MATCHES_TEXT: any = 'not-existent-element'; + +const getMultipleInstancesFoundMessage = (value: string) => { + return `Found multiple elements with accessibilityHint: ${value}`; +}; + +const getNoInstancesFoundMessage = (value: string) => { + return `Unable to find an element with accessibilityHint: ${value}`; +}; + +const Typography = ({ children, ...rest }: any) => { + return {children}; +}; + +const Button = ({ children }: { children: React.ReactNode }) => ( + + {children} + +); + +const Section = () => ( + <> + Title + + +); + +test('getByA11yHint, queryByA11yHint, findByA11yHint', async () => { + const { getByA11yHint, queryByA11yHint, findByA11yHint } = render( +
+ ); + + expect(getByA11yHint(BUTTON_HINT).props.accessibilityHint).toEqual( + BUTTON_HINT + ); + const button = queryByA11yHint(BUTTON_HINT); + expect(button?.props.accessibilityHint).toEqual(BUTTON_HINT); + + expect(() => getByA11yHint(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + expect(queryByA11yHint(NO_MATCHES_TEXT)).toBeNull(); + + expect(() => getByA11yHint(TEXT_HINT)).toThrow( + getMultipleInstancesFoundMessage(TEXT_HINT) + ); + expect(() => queryByA11yHint(TEXT_HINT)).toThrow( + getMultipleInstancesFoundMessage(TEXT_HINT) + ); + + const asyncButton = await findByA11yHint(BUTTON_HINT); + expect(asyncButton.props.accessibilityHint).toEqual(BUTTON_HINT); + await expect(findByA11yHint(NO_MATCHES_TEXT)).rejects.toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + + await expect(findByA11yHint(TEXT_HINT)).rejects.toThrow( + getMultipleInstancesFoundMessage(TEXT_HINT) + ); +}); + +test('getAllByA11yHint, queryAllByA11yHint, findAllByA11yHint', async () => { + const { getAllByA11yHint, queryAllByA11yHint, findAllByA11yHint } = render( +
+ ); + + expect(getAllByA11yHint(TEXT_HINT)).toHaveLength(2); + expect(queryAllByA11yHint(TEXT_HINT)).toHaveLength(2); + + expect(() => getAllByA11yHint(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + expect(queryAllByA11yHint(NO_MATCHES_TEXT)).toEqual([]); + + await expect(findAllByA11yHint(TEXT_HINT)).resolves.toHaveLength(2); + await expect(findAllByA11yHint(NO_MATCHES_TEXT)).rejects.toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); +}); diff --git a/src/queries/__tests__/labelText.test.tsx b/src/queries/__tests__/labelText.test.tsx new file mode 100644 index 000000000..8b9dc54e1 --- /dev/null +++ b/src/queries/__tests__/labelText.test.tsx @@ -0,0 +1,95 @@ +import * as React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { render } from '../..'; + +const BUTTON_LABEL = 'cool button'; +const BUTTON_HINT = 'click this button'; +const TEXT_LABEL = 'cool text'; +const TEXT_HINT = 'static text'; +// Little hack to make all the methods happy with type +const NO_MATCHES_TEXT: any = 'not-existent-element'; + +const getMultipleInstancesFoundMessage = (value: string) => { + return `Found multiple elements with accessibilityLabel: ${value}`; +}; + +const getNoInstancesFoundMessage = (value: string) => { + return `Unable to find an element with accessibilityLabel: ${value}`; +}; + +const Typography = ({ children, ...rest }: any) => { + return {children}; +}; + +const Button = ({ children }: { children: React.ReactNode }) => ( + + + {children} + + +); + +const Section = () => ( + <> + + Title + + + +); + +test('getByLabelText, queryByLabelText, findByLabelText', async () => { + const { getByLabelText, queryByLabelText, findByLabelText } = render( +
+ ); + + expect(getByLabelText(BUTTON_LABEL).props.accessibilityLabel).toEqual( + BUTTON_LABEL + ); + const button = queryByLabelText(/button/g); + expect(button?.props.accessibilityLabel).toEqual(BUTTON_LABEL); + + expect(() => getByLabelText(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + expect(queryByLabelText(NO_MATCHES_TEXT)).toBeNull(); + + expect(() => getByLabelText(TEXT_LABEL)).toThrow( + getMultipleInstancesFoundMessage(TEXT_LABEL) + ); + expect(() => queryByLabelText(TEXT_LABEL)).toThrow( + getMultipleInstancesFoundMessage(TEXT_LABEL) + ); + + const asyncButton = await findByLabelText(BUTTON_LABEL); + expect(asyncButton.props.accessibilityLabel).toEqual(BUTTON_LABEL); + await expect(findByLabelText(NO_MATCHES_TEXT)).rejects.toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + + await expect(findByLabelText(TEXT_LABEL)).rejects.toThrow( + getMultipleInstancesFoundMessage(TEXT_LABEL) + ); +}); + +test('getAllByLabelText, queryAllByLabelText, findAllByLabelText', async () => { + const { getAllByLabelText, queryAllByLabelText, findAllByLabelText } = render( +
+ ); + + expect(getAllByLabelText(TEXT_LABEL)).toHaveLength(2); + expect(queryAllByLabelText(/cool/g)).toHaveLength(3); + + expect(() => getAllByLabelText(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + expect(queryAllByLabelText(NO_MATCHES_TEXT)).toEqual([]); + + await expect(findAllByLabelText(TEXT_LABEL)).resolves.toHaveLength(2); + await expect(findAllByLabelText(NO_MATCHES_TEXT)).rejects.toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); +}); diff --git a/src/queries/__tests__/role.test.tsx b/src/queries/__tests__/role.test.tsx new file mode 100644 index 000000000..de5ebfd7f --- /dev/null +++ b/src/queries/__tests__/role.test.tsx @@ -0,0 +1,79 @@ +import * as React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { render } from '../..'; + +const TEXT_LABEL = 'cool text'; + +// Little hack to make all the methods happy with type +const NO_MATCHES_TEXT: any = 'not-existent-element'; + +const getMultipleInstancesFoundMessage = (value: string) => { + return `Found multiple elements with accessibilityRole: ${value}`; +}; + +const getNoInstancesFoundMessage = (value: string) => { + return `Unable to find an element with accessibilityRole: ${value}`; +}; + +const Typography = ({ children, ...rest }: any) => { + return {children}; +}; + +const Button = ({ children }: { children: React.ReactNode }) => ( + + {children} + +); + +const Section = () => ( + <> + Title + + +); + +test('getByRole, queryByRole, findByRole', async () => { + const { getByRole, queryByRole, findByRole } = render(
); + + expect(getByRole('button').props.accessibilityRole).toEqual('button'); + const button = queryByRole(/button/g); + expect(button?.props.accessibilityRole).toEqual('button'); + + expect(() => getByRole(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + expect(queryByRole(NO_MATCHES_TEXT)).toBeNull(); + + expect(() => getByRole('link')).toThrow( + getMultipleInstancesFoundMessage('link') + ); + expect(() => queryByRole('link')).toThrow( + getMultipleInstancesFoundMessage('link') + ); + + const asyncButton = await findByRole('button'); + expect(asyncButton.props.accessibilityRole).toEqual('button'); + await expect(findByRole(NO_MATCHES_TEXT)).rejects.toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + await expect(findByRole('link')).rejects.toThrow( + getMultipleInstancesFoundMessage('link') + ); +}); + +test('getAllByRole, queryAllByRole, findAllByRole', async () => { + const { getAllByRole, queryAllByRole, findAllByRole } = render(
); + + expect(getAllByRole('link')).toHaveLength(2); + expect(queryAllByRole(/ink/g)).toHaveLength(2); + + expect(() => getAllByRole(NO_MATCHES_TEXT)).toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); + expect(queryAllByRole(NO_MATCHES_TEXT)).toEqual([]); + + await expect(findAllByRole('link')).resolves.toHaveLength(2); + await expect(findAllByRole(NO_MATCHES_TEXT)).rejects.toThrow( + getNoInstancesFoundMessage(NO_MATCHES_TEXT) + ); +}); diff --git a/src/queries/a11yAPI.ts b/src/queries/a11yAPI.ts deleted file mode 100644 index 4b9f42e53..000000000 --- a/src/queries/a11yAPI.ts +++ /dev/null @@ -1,261 +0,0 @@ -import type { ReactTestInstance } from 'react-test-renderer'; -import type { AccessibilityRole, AccessibilityState } from 'react-native'; -import type { WaitForOptions } from '../waitFor'; -import type { TextMatch } from '../matches'; -import makeA11yQuery from './makeA11yQuery'; - -type AccessibilityStateKey = keyof AccessibilityState; -type A11yValue = { - min?: number; - max?: number; - now?: number; - text?: string; -}; - -type GetReturn = ReactTestInstance; -type GetAllReturn = Array; -type QueryReturn = ReactTestInstance | null; -type QueryAllReturn = Array; -type FindReturn = Promise; -type FindAllReturn = Promise; - -export type A11yAPI = { - // Label - getByLabelText: (label: TextMatch) => GetReturn; - getAllByLabelText: (label: TextMatch) => GetAllReturn; - queryByLabelText: (label: TextMatch) => QueryReturn; - queryAllByLabelText: (label: TextMatch) => QueryAllReturn; - findByLabelText: ( - label: TextMatch, - waitForOptions?: WaitForOptions - ) => FindReturn; - findAllByLabelText: ( - label: TextMatch, - waitForOptions?: WaitForOptions - ) => FindAllReturn; - - // Hint - getByA11yHint: (a11yHint: TextMatch) => GetReturn; - getByHintText: (a11yHint: TextMatch) => GetReturn; - getAllByA11yHint: (a11yHint: TextMatch) => GetAllReturn; - getAllByHintText: (a11yHint: TextMatch) => GetAllReturn; - queryByA11yHint: (a11yHint: TextMatch) => QueryReturn; - queryByHintText: (a11yHint: TextMatch) => QueryReturn; - queryAllByA11yHint: (a11yHint: TextMatch) => QueryAllReturn; - queryAllByHintText: (a11yHint: TextMatch) => QueryAllReturn; - findByA11yHint: ( - a11yHint: TextMatch, - waitForOptions?: WaitForOptions - ) => FindReturn; - findByHintText: ( - a11yHint: TextMatch, - waitForOptions?: WaitForOptions - ) => FindReturn; - findAllByA11yHint: ( - a11yHint: TextMatch, - waitForOptions?: WaitForOptions - ) => FindAllReturn; - findAllByHintText: ( - a11yHint: TextMatch, - waitForOptions?: WaitForOptions - ) => FindAllReturn; - - // Role - getByRole: (role: AccessibilityRole | RegExp) => GetReturn; - getAllByRole: (role: AccessibilityRole | RegExp) => GetAllReturn; - queryByRole: (role: AccessibilityRole | RegExp) => QueryReturn; - queryAllByRole: (role: AccessibilityRole | RegExp) => QueryAllReturn; - findByRole: ( - role: AccessibilityRole, - waitForOptions?: WaitForOptions - ) => FindReturn; - findAllByRole: ( - role: AccessibilityRole, - waitForOptions?: WaitForOptions - ) => FindAllReturn; - - // States - getByA11yStates: ( - accessibilityStateKey: AccessibilityStateKey | Array - ) => GetReturn; - getAllByA11yStates: ( - accessibilityStateKey: AccessibilityStateKey | Array - ) => GetAllReturn; - queryByA11yStates: ( - accessibilityStateKey: AccessibilityStateKey | Array - ) => QueryReturn; - queryAllByA11yStates: ( - accessibilityStateKey: AccessibilityStateKey | Array - ) => QueryAllReturn; - findByA11yStates: ( - accessibilityStateKey: AccessibilityStateKey, - waitForOptions?: WaitForOptions - ) => FindReturn; - findAllByA11yStates: ( - accessibilityStateKey: AccessibilityStateKey, - waitForOptions?: WaitForOptions - ) => FindAllReturn; - - // State - getByA11yState: (accessibilityState: AccessibilityState) => GetReturn; - getAllByA11yState: (accessibilityState: AccessibilityState) => GetAllReturn; - queryByA11yState: (accessibilityState: AccessibilityState) => QueryReturn; - queryAllByA11yState: ( - accessibilityState: AccessibilityState - ) => QueryAllReturn; - findByA11yState: ( - accessibilityState: AccessibilityState, - waitForOptions?: WaitForOptions - ) => FindReturn; - findAllByA11yState: ( - accessibilityState: AccessibilityState, - waitForOptions?: WaitForOptions - ) => FindAllReturn; - - // Value - getByA11yValue: (a11yValue: A11yValue) => GetReturn; - getAllByA11yValue: (a11yValue: A11yValue) => GetAllReturn; - queryByA11yValue: (a11yValue: A11yValue) => QueryReturn; - queryAllByA11yValue: (a11yValue: A11yValue) => QueryAllReturn; - findByA11yValue: ( - a11yValue: A11yValue, - waitForOptions?: WaitForOptions - ) => FindReturn; - findAllByA11yValue: ( - a11yValue: A11yValue, - waitForOptions?: WaitForOptions - ) => FindAllReturn; -}; - -export function matchStringValue( - prop: string | undefined, - matcher: TextMatch -): boolean { - if (!prop) { - return false; - } - - if (typeof matcher === 'string') { - return prop === matcher; - } - - return Boolean(prop.match(matcher)); -} - -export function matchArrayValue( - prop: Array | undefined, - matcher: string | Array -): boolean { - if (!prop || matcher.length === 0) { - return false; - } - - if (typeof matcher === 'string') { - return prop.includes(matcher); - } - - return !matcher.some((e) => !prop.includes(e)); -} - -export function matchObject>( - prop: T | undefined, - matcher: T -): boolean { - return prop - ? Object.keys(matcher).length !== 0 && - Object.keys(prop).length !== 0 && - !Object.keys(matcher).some((key) => prop[key] !== matcher[key]) - : false; -} - -export const a11yAPI = (instance: ReactTestInstance): A11yAPI => - ({ - ...makeA11yQuery( - 'accessibilityLabel', - { - getBy: ['getByLabelText'], - getAllBy: ['getAllByLabelText'], - queryBy: ['queryByLabelText'], - queryAllBy: ['queryAllByLabelText'], - findBy: ['findByLabelText'], - findAllBy: ['findAllByLabelText'], - }, - matchStringValue - )(instance), - ...makeA11yQuery( - 'accessibilityHint', - { - getBy: ['getByA11yHint', 'getByAccessibilityHint', 'getByHintText'], - getAllBy: [ - 'getAllByA11yHint', - 'getAllByAccessibilityHint', - 'getAllByHintText', - ], - queryBy: [ - 'queryByA11yHint', - 'queryByAccessibilityHint', - 'queryByHintText', - ], - queryAllBy: [ - 'queryAllByA11yHint', - 'queryAllByAccessibilityHint', - 'queryAllByHintText', - ], - findBy: ['findByA11yHint', 'findByAccessibilityHint', 'findByHintText'], - findAllBy: [ - 'findAllByA11yHint', - 'findAllByAccessibilityHint', - 'findAllByHintText', - ], - }, - matchStringValue - )(instance), - ...makeA11yQuery( - 'accessibilityRole', - { - getBy: ['getByRole'], - getAllBy: ['getAllByRole'], - queryBy: ['queryByRole'], - queryAllBy: ['queryAllByRole'], - findBy: ['findByRole'], - findAllBy: ['findAllByRole'], - }, - matchStringValue - )(instance), - ...makeA11yQuery( - 'accessibilityStates', - { - getBy: ['getByA11yStates', 'getByAccessibilityStates'], - getAllBy: ['getAllByA11yStates', 'getAllByAccessibilityStates'], - queryBy: ['queryByA11yStates', 'queryByAccessibilityStates'], - queryAllBy: ['queryAllByA11yStates', 'queryAllByAccessibilityStates'], - findBy: ['findByA11yStates', 'findByAccessibilityStates'], - findAllBy: ['findAllByA11yStates', 'findAllByAccessibilityStates'], - }, - matchArrayValue - )(instance), - ...makeA11yQuery( - 'accessibilityState', - { - getBy: ['getByA11yState', 'getByAccessibilityState'], - getAllBy: ['getAllByA11yState', 'getAllByAccessibilityState'], - queryBy: ['queryByA11yState', 'queryByAccessibilityState'], - queryAllBy: ['queryAllByA11yState', 'queryAllByAccessibilityState'], - findBy: ['findByA11yState', 'findByAccessibilityState'], - findAllBy: ['findAllByA11yState', 'findAllByAccessibilityState'], - }, - matchObject - )(instance), - ...makeA11yQuery( - 'accessibilityValue', - { - getBy: ['getByA11yValue', 'getByAccessibilityValue'], - getAllBy: ['getAllByA11yValue', 'getAllByAccessibilityValue'], - queryBy: ['queryByA11yValue', 'queryByAccessibilityValue'], - queryAllBy: ['queryAllByA11yValue', 'queryAllByAccessibilityValue'], - findBy: ['findByA11yValue', 'findByAccessibilityValue'], - findAllBy: ['findAllByA11yValue', 'findAllByAccessibilityValue'], - }, - matchObject - )(instance), - } as any); diff --git a/src/queries/a11yState.ts b/src/queries/a11yState.ts new file mode 100644 index 000000000..19133fd2c --- /dev/null +++ b/src/queries/a11yState.ts @@ -0,0 +1,77 @@ +import type { ReactTestInstance } from 'react-test-renderer'; +import { AccessibilityState } from 'react-native'; +import { matchObjectProp } from '../helpers/matchers/matchObjectProp'; +import { makeQueries } from './makeQueries'; +import type { + FindAllByQuery, + FindByQuery, + GetAllByQuery, + GetByQuery, + QueryAllByQuery, + QueryByQuery, +} from './makeQueries'; + +const queryAllByA11yState = ( + instance: ReactTestInstance +): ((state: AccessibilityState) => Array) => + function queryAllByA11yStateFn(state) { + return instance.findAll( + (node) => + typeof node.type === 'string' && + matchObjectProp(node.props.accessibilityState, state) + ); + }; + +const getMultipleError = (state: AccessibilityState) => + `Found multiple elements with accessibilityState: ${JSON.stringify(state)}`; +const getMissingError = (state: AccessibilityState) => + `Unable to find an element with accessibilityState: ${JSON.stringify(state)}`; + +const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( + queryAllByA11yState, + getMissingError, + getMultipleError +); + +export type ByA11yStateQueries = { + getByA11yState: GetByQuery; + getAllByA11yState: GetAllByQuery; + queryByA11yState: QueryByQuery; + queryAllByA11yState: QueryAllByQuery; + findByA11yState: FindByQuery; + findAllByA11yState: FindAllByQuery; + + getByAccessibilityState: GetByQuery; + getAllByAccessibilityState: GetAllByQuery; + queryByAccessibilityState: QueryByQuery; + queryAllByAccessibilityState: QueryAllByQuery; + findByAccessibilityState: FindByQuery; + findAllByAccessibilityState: FindAllByQuery; +}; + +export const bindByA11yStateQueries = ( + instance: ReactTestInstance +): ByA11yStateQueries => { + const getByA11yState = getBy(instance); + const getAllByA11yState = getAllBy(instance); + const queryByA11yState = queryBy(instance); + const queryAllByA11yState = queryAllBy(instance); + const findByA11yState = findBy(instance); + const findAllByA11yState = findAllBy(instance); + + return { + getByA11yState, + getAllByA11yState, + queryByA11yState, + queryAllByA11yState, + findByA11yState, + findAllByA11yState, + + getByAccessibilityState: getByA11yState, + getAllByAccessibilityState: getAllByA11yState, + queryByAccessibilityState: queryByA11yState, + queryAllByAccessibilityState: queryAllByA11yState, + findByAccessibilityState: findByA11yState, + findAllByAccessibilityState: findAllByA11yState, + }; +}; diff --git a/src/queries/a11yStates.ts b/src/queries/a11yStates.ts new file mode 100644 index 000000000..fbceaa357 --- /dev/null +++ b/src/queries/a11yStates.ts @@ -0,0 +1,86 @@ +import type { ReactTestInstance } from 'react-test-renderer'; +import { AccessibilityState } from 'react-native'; +import { matchArrayProp } from '../helpers/matchers/matchArrayProp'; +import { makeQueries } from './makeQueries'; +import type { + FindAllByQuery, + FindByQuery, + GetAllByQuery, + GetByQuery, + QueryAllByQuery, + QueryByQuery, +} from './makeQueries'; + +type AccessibilityStateKey = keyof AccessibilityState; +type AccessibilityStateKeys = + | AccessibilityStateKey + | Array; + +const queryAllByA11yStates = ( + instance: ReactTestInstance +): (( + accessibilityStates: AccessibilityStateKeys +) => Array) => + function queryAllByA11yStatesFn(accessibilityStates) { + return instance.findAll( + (node) => + typeof node.type === 'string' && + matchArrayProp(node.props.accessibilityState, accessibilityStates) + ); + }; + +const getMultipleError = (states: AccessibilityStateKeys) => + `Found multiple elements with accessibilityState: ${JSON.stringify(states)}`; +const getMissingError = (states: AccessibilityStateKeys) => + `Unable to find an element with accessibilityState: ${JSON.stringify( + states + )}`; + +const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( + queryAllByA11yStates, + getMissingError, + getMultipleError +); + +export type ByA11yStatesQueries = { + getByA11yStates: GetByQuery; + getAllByA11yStates: GetAllByQuery; + queryByA11yStates: QueryByQuery; + queryAllByA11yStates: QueryAllByQuery; + findByA11yStates: FindByQuery; + findAllByA11yStates: FindAllByQuery; + + getByAccessibilityStates: GetByQuery; + getAllByAccessibilityStates: GetAllByQuery; + queryByAccessibilityStates: QueryByQuery; + queryAllByAccessibilityStates: QueryAllByQuery; + findByAccessibilityStates: FindByQuery; + findAllByAccessibilityStates: FindAllByQuery; +}; + +export const bindByA11yStatesQueries = ( + instance: ReactTestInstance +): ByA11yStatesQueries => { + const getByA11yStates = getBy(instance); + const getAllByA11yStates = getAllBy(instance); + const queryByA11yStates = queryBy(instance); + const queryAllByA11yStates = queryAllBy(instance); + const findByA11yStates = findBy(instance); + const findAllByA11yStates = findAllBy(instance); + + return { + getByA11yStates, + getAllByA11yStates, + queryByA11yStates, + queryAllByA11yStates, + findByA11yStates, + findAllByA11yStates, + + getByAccessibilityStates: getByA11yStates, + getAllByAccessibilityStates: getAllByA11yStates, + queryByAccessibilityStates: queryByA11yStates, + queryAllByAccessibilityStates: queryAllByA11yStates, + findByAccessibilityStates: findByA11yStates, + findAllByAccessibilityStates: findAllByA11yStates, + }; +}; diff --git a/src/queries/a11yValue.ts b/src/queries/a11yValue.ts new file mode 100644 index 000000000..8e68957e3 --- /dev/null +++ b/src/queries/a11yValue.ts @@ -0,0 +1,83 @@ +import type { ReactTestInstance } from 'react-test-renderer'; +import { matchObjectProp } from '../helpers/matchers/matchObjectProp'; +import { makeQueries } from './makeQueries'; +import type { + FindAllByQuery, + FindByQuery, + GetAllByQuery, + GetByQuery, + QueryAllByQuery, + QueryByQuery, +} from './makeQueries'; + +type A11yValue = { + min?: number; + max?: number; + now?: number; + text?: string; +}; + +const queryAllByA11yValue = ( + instance: ReactTestInstance +): ((value: A11yValue) => Array) => + function queryAllByA11yValueFn(value) { + return instance.findAll( + (node) => + typeof node.type === 'string' && + matchObjectProp(node.props.accessibilityValue, value) + ); + }; + +const getMultipleError = (value: A11yValue) => + `Found multiple elements with accessibilityValue: ${JSON.stringify(value)} `; +const getMissingError = (value: A11yValue) => + `Unable to find an element with accessibilityValue: ${JSON.stringify(value)}`; + +const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( + queryAllByA11yValue, + getMissingError, + getMultipleError +); + +export type ByA11yValueQueries = { + getByA11yValue: GetByQuery; + getAllByA11yValue: GetAllByQuery; + queryByA11yValue: QueryByQuery; + queryAllByA11yValue: QueryAllByQuery; + findByA11yValue: FindByQuery; + findAllByA11yValue: FindAllByQuery; + + getByAccessibilityValue: GetByQuery; + getAllByAccessibilityValue: GetAllByQuery; + queryByAccessibilityValue: QueryByQuery; + queryAllByAccessibilityValue: QueryAllByQuery; + findByAccessibilityValue: FindByQuery; + findAllByAccessibilityValue: FindAllByQuery; +}; + +export const bindByA11yValueQueries = ( + instance: ReactTestInstance +): ByA11yValueQueries => { + const getByA11yValue = getBy(instance); + const getAllByA11yValue = getAllBy(instance); + const queryByA11yValue = queryBy(instance); + const queryAllByA11yValue = queryAllBy(instance); + const findByA11yValue = findBy(instance); + const findAllByA11yValue = findAllBy(instance); + + return { + getByA11yValue, + getAllByA11yValue, + queryByA11yValue, + queryAllByA11yValue, + findByA11yValue, + findAllByA11yValue, + + getByAccessibilityValue: getByA11yValue, + getAllByAccessibilityValue: getAllByA11yValue, + queryByAccessibilityValue: queryByA11yValue, + queryAllByAccessibilityValue: queryAllByA11yValue, + findByAccessibilityValue: findByA11yValue, + findAllByAccessibilityValue: findAllByA11yValue, + }; +}; diff --git a/src/queries/hintText.ts b/src/queries/hintText.ts new file mode 100644 index 000000000..a7a28c1cc --- /dev/null +++ b/src/queries/hintText.ts @@ -0,0 +1,95 @@ +import type { ReactTestInstance } from 'react-test-renderer'; +import { TextMatch } from '../matches'; +import { matchStringProp } from '../helpers/matchers/matchStringProp'; +import { makeQueries } from './makeQueries'; +import type { + FindAllByQuery, + FindByQuery, + GetAllByQuery, + GetByQuery, + QueryAllByQuery, + QueryByQuery, +} from './makeQueries'; + +const queryAllByHintText = ( + instance: ReactTestInstance +): ((hint: TextMatch) => Array) => + function queryAllByA11yHintFn(hint) { + return instance.findAll( + (node) => + typeof node.type === 'string' && + matchStringProp(node.props.accessibilityHint, hint) + ); + }; + +const getMultipleError = (hint: TextMatch) => + `Found multiple elements with accessibilityHint: ${String(hint)} `; +const getMissingError = (hint: TextMatch) => + `Unable to find an element with accessibilityHint: ${String(hint)}`; + +const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( + queryAllByHintText, + getMissingError, + getMultipleError +); + +export type ByHintTextQueries = { + getByHintText: GetByQuery; + getAllByHintText: GetAllByQuery; + queryByHintText: QueryByQuery; + queryAllByHintText: QueryAllByQuery; + findByHintText: FindByQuery; + findAllByHintText: FindAllByQuery; + + // a11yHint aliases + getByA11yHint: GetByQuery; + getAllByA11yHint: GetAllByQuery; + queryByA11yHint: QueryByQuery; + queryAllByA11yHint: QueryAllByQuery; + findByA11yHint: FindByQuery; + findAllByA11yHint: FindAllByQuery; + + // accessibilityHint aliases + getByAccessibilityHint: GetByQuery; + getAllByAccessibilityHint: GetAllByQuery; + queryByAccessibilityHint: QueryByQuery; + queryAllByAccessibilityHint: QueryAllByQuery; + findByAccessibilityHint: FindByQuery; + findAllByAccessibilityHint: FindAllByQuery; +}; + +export const bindByHintTextQueries = ( + instance: ReactTestInstance +): ByHintTextQueries => { + const getByHintText = getBy(instance); + const getAllByHintText = getAllBy(instance); + const queryByHintText = queryBy(instance); + const queryAllByHintText = queryAllBy(instance); + const findByHintText = findBy(instance); + const findAllByHintText = findAllBy(instance); + + return { + getByHintText, + getAllByHintText, + queryByHintText, + queryAllByHintText, + findByHintText, + findAllByHintText, + + // a11yHint aliases + getByA11yHint: getByHintText, + getAllByA11yHint: getAllByHintText, + queryByA11yHint: queryByHintText, + queryAllByA11yHint: queryAllByHintText, + findByA11yHint: findByHintText, + findAllByA11yHint: findAllByHintText, + + // accessibilityHint aliases + getByAccessibilityHint: getByHintText, + getAllByAccessibilityHint: getAllByHintText, + queryByAccessibilityHint: queryByHintText, + queryAllByAccessibilityHint: queryAllByHintText, + findByAccessibilityHint: findByHintText, + findAllByAccessibilityHint: findAllByHintText, + }; +}; diff --git a/src/queries/labelText.ts b/src/queries/labelText.ts new file mode 100644 index 000000000..8142222bb --- /dev/null +++ b/src/queries/labelText.ts @@ -0,0 +1,54 @@ +import type { ReactTestInstance } from 'react-test-renderer'; +import { TextMatch } from '../matches'; +import { matchStringProp } from '../helpers/matchers/matchStringProp'; +import { makeQueries } from './makeQueries'; +import type { + FindAllByQuery, + FindByQuery, + GetAllByQuery, + GetByQuery, + QueryAllByQuery, + QueryByQuery, +} from './makeQueries'; + +const queryAllByLabelText = ( + instance: ReactTestInstance +): ((text: TextMatch) => Array) => + function queryAllByLabelTextFn(text) { + return instance.findAll( + (node) => + typeof node.type === 'string' && + matchStringProp(node.props.accessibilityLabel, text) + ); + }; + +const getMultipleError = (labelText: TextMatch) => + `Found multiple elements with accessibilityLabel: ${String(labelText)} `; +const getMissingError = (labelText: TextMatch) => + `Unable to find an element with accessibilityLabel: ${String(labelText)}`; + +const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( + queryAllByLabelText, + getMissingError, + getMultipleError +); + +export type ByLabelTextQueries = { + getByLabelText: GetByQuery; + getAllByLabelText: GetAllByQuery; + queryByLabelText: QueryByQuery; + queryAllByLabelText: QueryAllByQuery; + findByLabelText: FindByQuery; + findAllByLabelText: FindAllByQuery; +}; + +export const bindByLabelTextQueries = ( + instance: ReactTestInstance +): ByLabelTextQueries => ({ + getByLabelText: getBy(instance), + getAllByLabelText: getAllBy(instance), + queryByLabelText: queryBy(instance), + queryAllByLabelText: queryAllBy(instance), + findByLabelText: findBy(instance), + findAllByLabelText: findAllBy(instance), +}); diff --git a/src/queries/makeA11yQuery.ts b/src/queries/makeA11yQuery.ts deleted file mode 100644 index 889f00be8..000000000 --- a/src/queries/makeA11yQuery.ts +++ /dev/null @@ -1,96 +0,0 @@ -import type { ReactTestInstance } from 'react-test-renderer'; -import waitFor from '../waitFor'; -import type { WaitForOptions } from '../waitFor'; -import { - ErrorWithStack, - prepareErrorMessage, - createQueryByError, -} from '../helpers/errors'; - -function isNodeValid(node: ReactTestInstance) { - return typeof node.type === 'string'; -} - -function makeAliases(aliases: Array, query: Function) { - return aliases - .map((alias) => ({ [alias]: query })) - .reduce((acc, query) => ({ ...acc, ...query }), {}); -} - -type QueryNames = { - getBy: Array; - getAllBy: Array; - queryBy: Array; - queryAllBy: Array; - findBy: Array; - findAllBy: Array; -}; - -const makeA11yQuery =

( - name: string, - queryNames: QueryNames, - matcherFn: (prop: P, value: M) => boolean -) => (instance: ReactTestInstance) => { - const getBy = (matcher: M) => { - try { - return instance.find( - (node) => isNodeValid(node) && matcherFn(node.props[name], matcher) - ); - } catch (error) { - throw new ErrorWithStack( - prepareErrorMessage(error, name, matcher), - getBy - ); - } - }; - - const getAllBy = (matcher: M) => { - const results = instance.findAll( - (node) => isNodeValid(node) && matcherFn(node.props[name], matcher) - ); - - if (results.length === 0) { - throw new ErrorWithStack( - prepareErrorMessage(new Error('No instances found'), name, matcher), - getAllBy - ); - } - - return results; - }; - - const queryBy = (matcher: M) => { - try { - return getBy(matcher); - } catch (error) { - return createQueryByError(error, queryBy); - } - }; - - const queryAllBy = (matcher: M) => { - try { - return getAllBy(matcher); - } catch (error) { - return []; - } - }; - - const findBy = (matcher: M, waitForOptions?: WaitForOptions) => { - return waitFor(() => getBy(matcher), waitForOptions); - }; - - const findAllBy = (matcher: M, waitForOptions?: WaitForOptions) => { - return waitFor(() => getAllBy(matcher), waitForOptions); - }; - - return { - ...makeAliases(queryNames.getBy, getBy), - ...makeAliases(queryNames.getAllBy, getAllBy), - ...makeAliases(queryNames.queryBy, queryBy), - ...makeAliases(queryNames.queryAllBy, queryAllBy), - ...makeAliases(queryNames.findBy, findBy), - ...makeAliases(queryNames.findAllBy, findAllBy), - }; -}; - -export default makeA11yQuery; diff --git a/src/queries/makeQueries.ts b/src/queries/makeQueries.ts index b54da4207..0122259ab 100644 --- a/src/queries/makeQueries.ts +++ b/src/queries/makeQueries.ts @@ -3,33 +3,33 @@ import { ErrorWithStack } from '../helpers/errors'; import waitFor from '../waitFor'; import type { WaitForOptions } from '../waitFor'; -export type GetByQuery = ( +export type GetByQuery = ( predicate: Predicate, options?: Options ) => ReactTestInstance; -export type GetAllByQuery = ( +export type GetAllByQuery = ( predicate: Predicate, options?: Options ) => ReactTestInstance[]; -export type QueryByQuery = ( +export type QueryByQuery = ( predicate: Predicate, options?: Options ) => ReactTestInstance | null; -export type QueryAllByQuery = ( +export type QueryAllByQuery = ( predicate: Predicate, options?: Options ) => ReactTestInstance[]; -export type FindByQuery = ( +export type FindByQuery = ( predicate: Predicate, options?: Options & WaitForOptions, waitForOptions?: WaitForOptions ) => Promise; -export type FindAllByQuery = ( +export type FindAllByQuery = ( predicate: Predicate, options?: Options & WaitForOptions, waitForOptions?: WaitForOptions diff --git a/src/queries/role.ts b/src/queries/role.ts new file mode 100644 index 000000000..552998b22 --- /dev/null +++ b/src/queries/role.ts @@ -0,0 +1,54 @@ +import type { ReactTestInstance } from 'react-test-renderer'; +import { TextMatch } from '../matches'; +import { matchStringProp } from '../helpers/matchers/matchStringProp'; +import { makeQueries } from './makeQueries'; +import type { + FindAllByQuery, + FindByQuery, + GetAllByQuery, + GetByQuery, + QueryAllByQuery, + QueryByQuery, +} from './makeQueries'; + +const queryAllByRole = ( + instance: ReactTestInstance +): ((role: TextMatch) => Array) => + function queryAllByRoleFn(role) { + return instance.findAll( + (node) => + typeof node.type === 'string' && + matchStringProp(node.props.accessibilityRole, role) + ); + }; + +const getMultipleError = (role: TextMatch) => + `Found multiple elements with accessibilityRole: ${String(role)} `; +const getMissingError = (role: TextMatch) => + `Unable to find an element with accessibilityRole: ${String(role)}`; + +const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( + queryAllByRole, + getMissingError, + getMultipleError +); + +export type ByRoleQueries = { + getByRole: GetByQuery; + getAllByRole: GetAllByQuery; + queryByRole: QueryByQuery; + queryAllByRole: QueryAllByQuery; + findByRole: FindByQuery; + findAllByRole: FindAllByQuery; +}; + +export const bindByRoleQueries = ( + instance: ReactTestInstance +): ByRoleQueries => ({ + getByRole: getBy(instance), + getAllByRole: getAllBy(instance), + queryByRole: queryBy(instance), + queryAllByRole: queryAllBy(instance), + findByRole: findBy(instance), + findAllByRole: findAllBy(instance), +}); diff --git a/src/screen.ts b/src/screen.ts index 6d44957e4..5ce85f98d 100644 --- a/src/screen.ts +++ b/src/screen.ts @@ -27,18 +27,24 @@ const defaultScreen: RenderResult = { queryAllByLabelText: notImplemented, findByLabelText: notImplemented, findAllByLabelText: notImplemented, - getByA11yHint: notImplemented, getByHintText: notImplemented, - getAllByA11yHint: notImplemented, getAllByHintText: notImplemented, - queryByA11yHint: notImplemented, queryByHintText: notImplemented, - queryAllByA11yHint: notImplemented, queryAllByHintText: notImplemented, - findByA11yHint: notImplemented, findByHintText: notImplemented, - findAllByA11yHint: notImplemented, findAllByHintText: notImplemented, + getByA11yHint: notImplemented, + getAllByA11yHint: notImplemented, + queryByA11yHint: notImplemented, + queryAllByA11yHint: notImplemented, + findByA11yHint: notImplemented, + findAllByA11yHint: notImplemented, + getByAccessibilityHint: notImplemented, + getAllByAccessibilityHint: notImplemented, + queryByAccessibilityHint: notImplemented, + queryAllByAccessibilityHint: notImplemented, + findByAccessibilityHint: notImplemented, + findAllByAccessibilityHint: notImplemented, getByRole: notImplemented, getAllByRole: notImplemented, queryByRole: notImplemented, @@ -51,18 +57,36 @@ const defaultScreen: RenderResult = { queryAllByA11yStates: notImplemented, findByA11yStates: notImplemented, findAllByA11yStates: notImplemented, + getByAccessibilityStates: notImplemented, + getAllByAccessibilityStates: notImplemented, + queryByAccessibilityStates: notImplemented, + queryAllByAccessibilityStates: notImplemented, + findByAccessibilityStates: notImplemented, + findAllByAccessibilityStates: notImplemented, getByA11yState: notImplemented, getAllByA11yState: notImplemented, queryByA11yState: notImplemented, queryAllByA11yState: notImplemented, findByA11yState: notImplemented, findAllByA11yState: notImplemented, + getByAccessibilityState: notImplemented, + getAllByAccessibilityState: notImplemented, + queryByAccessibilityState: notImplemented, + queryAllByAccessibilityState: notImplemented, + findByAccessibilityState: notImplemented, + findAllByAccessibilityState: notImplemented, getByA11yValue: notImplemented, getAllByA11yValue: notImplemented, queryByA11yValue: notImplemented, queryAllByA11yValue: notImplemented, findByA11yValue: notImplemented, findAllByA11yValue: notImplemented, + getByAccessibilityValue: notImplemented, + getAllByAccessibilityValue: notImplemented, + queryByAccessibilityValue: notImplemented, + queryAllByAccessibilityValue: notImplemented, + findByAccessibilityValue: notImplemented, + findAllByAccessibilityValue: notImplemented, UNSAFE_getByProps: notImplemented, UNSAFE_getAllByProps: notImplemented, UNSAFE_queryByProps: notImplemented, diff --git a/src/within.ts b/src/within.ts index 9a6bdc8fe..e76122202 100644 --- a/src/within.ts +++ b/src/within.ts @@ -1,9 +1,14 @@ import type { ReactTestInstance } from 'react-test-renderer'; -import { a11yAPI } from './queries/a11yAPI'; import { bindByTextQueries } from './queries/text'; import { bindByTestIdQueries } from './queries/testId'; import { bindByDisplayValueQueries } from './queries/displayValue'; import { bindByPlaceholderTextQueries } from './queries/placeholderText'; +import { bindByLabelTextQueries } from './queries/labelText'; +import { bindByHintTextQueries } from './queries/hintText'; +import { bindByRoleQueries } from './queries/role'; +import { bindByA11yStateQueries } from './queries/a11yState'; +import { bindByA11yStatesQueries } from './queries/a11yStates'; +import { bindByA11yValueQueries } from './queries/a11yValue'; import { bindUnsafeByTypeQueries } from './queries/unsafeType'; import { bindUnsafeByPropsQueries } from './queries/unsafeProps'; @@ -13,9 +18,14 @@ export function within(instance: ReactTestInstance) { ...bindByTestIdQueries(instance), ...bindByDisplayValueQueries(instance), ...bindByPlaceholderTextQueries(instance), + ...bindByLabelTextQueries(instance), + ...bindByHintTextQueries(instance), + ...bindByRoleQueries(instance), + ...bindByA11yStateQueries(instance), + ...bindByA11yStatesQueries(instance), + ...bindByA11yValueQueries(instance), ...bindUnsafeByTypeQueries(instance), ...bindUnsafeByPropsQueries(instance), - ...a11yAPI(instance), }; } From 9f3b31dd9de01f8d8910c4293c32fa220beea24f Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Wed, 20 Jul 2022 12:33:19 +0200 Subject: [PATCH 11/14] refactor: remove deprecated byA11yStates queries (#1015) --- src/queries/__tests__/a11yStates.test.tsx | 86 ----------------------- src/queries/a11yStates.ts | 86 ----------------------- src/screen.ts | 12 ---- src/within.ts | 2 - typings/index.flow.js | 30 ++------ website/docs/API.md | 2 +- website/docs/Queries.md | 16 ----- 7 files changed, 7 insertions(+), 227 deletions(-) delete mode 100644 src/queries/__tests__/a11yStates.test.tsx delete mode 100644 src/queries/a11yStates.ts diff --git a/src/queries/__tests__/a11yStates.test.tsx b/src/queries/__tests__/a11yStates.test.tsx deleted file mode 100644 index 7a01b0725..000000000 --- a/src/queries/__tests__/a11yStates.test.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import * as React from 'react'; -import { TouchableOpacity, Text } from 'react-native'; -import { render } from '../..'; - -const TEXT_LABEL = 'cool text'; -// Little hack to make all the methods happy with type -const NO_MATCHES_TEXT: any = 'not-existent-element'; - -const getMultipleInstancesFoundMessage = (value: string) => { - return `Found multiple elements with accessibilityStates: ${value}`; -}; - -const getNoInstancesFoundMessage = (value: string) => { - return `Unable to find an element with accessibilityStates: ${value}`; -}; - -const Typography = ({ children, ...rest }: any) => { - return {children}; -}; - -const Button = ({ children }: { children: React.ReactNode }) => ( - - {children} - -); - -const Section = () => ( - <> - - Title - - - -); - -// TODO: accessibilityStates was removed from RN 0.62 -test.skip('getByA11yStates, queryByA11yStates', () => { - const { getByA11yStates, queryByA11yStates } = render(

); - - expect(getByA11yStates('disabled').props.accessibilityStates).toEqual([ - 'selected', - 'disabled', - ]); - const disabled = queryByA11yStates(['disabled']); - expect(disabled?.props.accessibilityStates).toMatchObject([ - 'selected', - 'disabled', - ]); - const disabledSelected = queryByA11yStates(['selected', 'disabled']); - expect(disabledSelected?.props.accessibilityStates).toEqual([ - 'selected', - 'disabled', - ]); - - expect(() => getByA11yStates(NO_MATCHES_TEXT)).toThrow( - getNoInstancesFoundMessage('accessibilityStates') - ); - expect(queryByA11yStates(NO_MATCHES_TEXT)).toBeNull(); - expect(queryByA11yStates([])).toBeNull(); - - expect(() => getByA11yStates('selected')).toThrow( - getMultipleInstancesFoundMessage('["selected"]') - ); - expect(() => queryByA11yStates('selected')).toThrow( - getMultipleInstancesFoundMessage('["selected"]') - ); -}); - -// TODO: accessibilityStates was removed from RN 0.62 -test.skip('getAllByA11yStates, queryAllByA11yStates', () => { - const { getAllByA11yStates, queryAllByA11yStates } = render(
); - - expect(getAllByA11yStates('selected')).toHaveLength(3); - expect(queryAllByA11yStates(['selected'])).toHaveLength(3); - - expect(() => getAllByA11yStates([])).toThrow( - getNoInstancesFoundMessage('[]') - ); - expect(queryAllByA11yStates(NO_MATCHES_TEXT)).toEqual([]); -}); diff --git a/src/queries/a11yStates.ts b/src/queries/a11yStates.ts deleted file mode 100644 index fbceaa357..000000000 --- a/src/queries/a11yStates.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { ReactTestInstance } from 'react-test-renderer'; -import { AccessibilityState } from 'react-native'; -import { matchArrayProp } from '../helpers/matchers/matchArrayProp'; -import { makeQueries } from './makeQueries'; -import type { - FindAllByQuery, - FindByQuery, - GetAllByQuery, - GetByQuery, - QueryAllByQuery, - QueryByQuery, -} from './makeQueries'; - -type AccessibilityStateKey = keyof AccessibilityState; -type AccessibilityStateKeys = - | AccessibilityStateKey - | Array; - -const queryAllByA11yStates = ( - instance: ReactTestInstance -): (( - accessibilityStates: AccessibilityStateKeys -) => Array) => - function queryAllByA11yStatesFn(accessibilityStates) { - return instance.findAll( - (node) => - typeof node.type === 'string' && - matchArrayProp(node.props.accessibilityState, accessibilityStates) - ); - }; - -const getMultipleError = (states: AccessibilityStateKeys) => - `Found multiple elements with accessibilityState: ${JSON.stringify(states)}`; -const getMissingError = (states: AccessibilityStateKeys) => - `Unable to find an element with accessibilityState: ${JSON.stringify( - states - )}`; - -const { getBy, getAllBy, queryBy, queryAllBy, findBy, findAllBy } = makeQueries( - queryAllByA11yStates, - getMissingError, - getMultipleError -); - -export type ByA11yStatesQueries = { - getByA11yStates: GetByQuery; - getAllByA11yStates: GetAllByQuery; - queryByA11yStates: QueryByQuery; - queryAllByA11yStates: QueryAllByQuery; - findByA11yStates: FindByQuery; - findAllByA11yStates: FindAllByQuery; - - getByAccessibilityStates: GetByQuery; - getAllByAccessibilityStates: GetAllByQuery; - queryByAccessibilityStates: QueryByQuery; - queryAllByAccessibilityStates: QueryAllByQuery; - findByAccessibilityStates: FindByQuery; - findAllByAccessibilityStates: FindAllByQuery; -}; - -export const bindByA11yStatesQueries = ( - instance: ReactTestInstance -): ByA11yStatesQueries => { - const getByA11yStates = getBy(instance); - const getAllByA11yStates = getAllBy(instance); - const queryByA11yStates = queryBy(instance); - const queryAllByA11yStates = queryAllBy(instance); - const findByA11yStates = findBy(instance); - const findAllByA11yStates = findAllBy(instance); - - return { - getByA11yStates, - getAllByA11yStates, - queryByA11yStates, - queryAllByA11yStates, - findByA11yStates, - findAllByA11yStates, - - getByAccessibilityStates: getByA11yStates, - getAllByAccessibilityStates: getAllByA11yStates, - queryByAccessibilityStates: queryByA11yStates, - queryAllByAccessibilityStates: queryAllByA11yStates, - findByAccessibilityStates: findByA11yStates, - findAllByAccessibilityStates: findAllByA11yStates, - }; -}; diff --git a/src/screen.ts b/src/screen.ts index 5ce85f98d..34a1504d5 100644 --- a/src/screen.ts +++ b/src/screen.ts @@ -51,18 +51,6 @@ const defaultScreen: RenderResult = { queryAllByRole: notImplemented, findByRole: notImplemented, findAllByRole: notImplemented, - getByA11yStates: notImplemented, - getAllByA11yStates: notImplemented, - queryByA11yStates: notImplemented, - queryAllByA11yStates: notImplemented, - findByA11yStates: notImplemented, - findAllByA11yStates: notImplemented, - getByAccessibilityStates: notImplemented, - getAllByAccessibilityStates: notImplemented, - queryByAccessibilityStates: notImplemented, - queryAllByAccessibilityStates: notImplemented, - findByAccessibilityStates: notImplemented, - findAllByAccessibilityStates: notImplemented, getByA11yState: notImplemented, getAllByA11yState: notImplemented, queryByA11yState: notImplemented, diff --git a/src/within.ts b/src/within.ts index e76122202..d4d36751f 100644 --- a/src/within.ts +++ b/src/within.ts @@ -7,7 +7,6 @@ import { bindByLabelTextQueries } from './queries/labelText'; import { bindByHintTextQueries } from './queries/hintText'; import { bindByRoleQueries } from './queries/role'; import { bindByA11yStateQueries } from './queries/a11yState'; -import { bindByA11yStatesQueries } from './queries/a11yStates'; import { bindByA11yValueQueries } from './queries/a11yValue'; import { bindUnsafeByTypeQueries } from './queries/unsafeType'; import { bindUnsafeByPropsQueries } from './queries/unsafeProps'; @@ -22,7 +21,6 @@ export function within(instance: ReactTestInstance) { ...bindByHintTextQueries(instance), ...bindByRoleQueries(instance), ...bindByA11yStateQueries(instance), - ...bindByA11yStatesQueries(instance), ...bindByA11yValueQueries(instance), ...bindUnsafeByTypeQueries(instance), ...bindUnsafeByPropsQueries(instance), diff --git a/typings/index.flow.js b/typings/index.flow.js index ead24d516..f371cc9cc 100644 --- a/typings/index.flow.js +++ b/typings/index.flow.js @@ -56,16 +56,6 @@ declare type A11yState = {| expanded?: boolean, |}; -declare type A11yStates = - | 'disabled' - | 'selected' - | 'checked' - | 'unchecked' - | 'busy' - | 'expanded' - | 'collapsed' - | 'hasPopup'; - declare type A11yValue = { min?: number, max?: number, @@ -266,25 +256,17 @@ interface A11yAPI { waitForOptions?: WaitForOptions ) => FindAllReturn; - // States - getByA11yStates: (matcher: A11yStates | Array) => GetReturn; - getAllByA11yStates: (matcher: A11yStates | Array) => GetAllReturn; - queryByA11yStates: (matcher: A11yStates | Array) => QueryReturn; - queryAllByA11yStates: ( - matcher: A11yStates | Array - ) => QueryAllReturn; - // State - getByA11yState: (matcher: A11yStates) => GetReturn; - getAllByA11yState: (matcher: A11yStates) => GetAllReturn; - queryByA11yState: (matcher: A11yStates) => QueryReturn; - queryAllByA11yState: (matcher: A11yStates) => QueryAllReturn; + getByA11yState: (matcher: A11yState) => GetReturn; + getAllByA11yState: (matcher: A11yState) => GetAllReturn; + queryByA11yState: (matcher: A11yState) => QueryReturn; + queryAllByA11yState: (matcher: A11yState) => QueryAllReturn; findByA11yState: ( - matcher: A11yStates, + matcher: A11yState, waitForOptions?: WaitForOptions ) => FindReturn; findAllByA11yState: ( - matcher: A11yStates, + matcher: A11yState, waitForOptions?: WaitForOptions ) => FindAllReturn; diff --git a/website/docs/API.md b/website/docs/API.md index dc854dde5..dbb20559a 100644 --- a/website/docs/API.md +++ b/website/docs/API.md @@ -97,7 +97,7 @@ See [Queries](./Queries.md) for a complete list. ```jsx import { render } from '@testing-library/react-native'; -const { getByText, queryByA11yStates } = render(); +const { getByText, queryByA11yState } = render(); ``` ### `update` diff --git a/website/docs/Queries.md b/website/docs/Queries.md index d1409e76c..65196a1ea 100644 --- a/website/docs/Queries.md +++ b/website/docs/Queries.md @@ -20,7 +20,6 @@ title: Queries - [`ByTestId`](#bytestid) - [`ByLabelText`](#bylabeltext) - [`ByHintText`, `ByA11yHint`, `ByAccessibilityHint`](#byhinttext-bya11yhint-byaccessibilityhint) - - [`ByA11yStates`, `ByAccessibilityStates`](#bya11ystates-byaccessibilitystates) - [`ByRole`](#byrole) - [`ByA11yState`, `ByAccessibilityState`](#bya11ystate-byaccessibilitystate) - [`ByA11Value`, `ByAccessibilityValue`](#bya11value-byaccessibilityvalue) @@ -177,21 +176,6 @@ const element = screen.getByHintText('Plays a song'); Please consult [Apple guidelines on how `accessibilityHint` should be used](https://developer.apple.com/documentation/objectivec/nsobject/1615093-accessibilityhint). ::: -### `ByA11yStates`, `ByAccessibilityStates` - -> getByA11yStates, getAllByA11yStates, queryByA11yStates, queryAllByA11yStates -> getByAccessibilityStates, getAllByAccessibilityStates, queryByAccessibilityStates, queryAllByAccessibilityStates - -Returns a `ReactTestInstance` with matching `accessibilityStates` prop. - -```jsx -import { render, screen } from '@testing-library/react-native'; - -render(); -const element = screen.getByA11yStates(['checked']); -const element2 = screen.getByA11yStates('checked'); -``` - ### `ByRole` > getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole From 980b3df4404a370315e2f8a28ff8d87e77a791bb Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Wed, 20 Jul 2022 14:08:57 +0200 Subject: [PATCH 12/14] chore: reenable skipped byText tests (#1017) --- src/queries/__tests__/text.test.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/queries/__tests__/text.test.tsx b/src/queries/__tests__/text.test.tsx index 8176a0278..d9a0b2d96 100644 --- a/src/queries/__tests__/text.test.tsx +++ b/src/queries/__tests__/text.test.tsx @@ -149,7 +149,7 @@ describe('findBy options deprecations', () => { }, 20000); }); -test.skip('getByText works properly with custom text component', () => { +test('getByText works properly with custom text component', () => { function BoldText({ children }: ChildrenProps) { return {children}; } @@ -163,7 +163,7 @@ test.skip('getByText works properly with custom text component', () => { ).toBeTruthy(); }); -test.skip('getByText works properly with custom text container', () => { +test('getByText works properly with custom text container', () => { function MyText({ children }: ChildrenProps) { return {children}; } From ade9f33986b8438ab05943f7b9ccaa545aa2cfd6 Mon Sep 17 00:00:00 2001 From: Maciej Jastrzebski Date: Wed, 20 Jul 2022 14:32:37 +0200 Subject: [PATCH 13/14] refactor: remove legacy wait for options support (#1018) --- src/queries/__tests__/text.test.tsx | 33 ---------------- src/queries/makeQueries.ts | 60 ++++++----------------------- 2 files changed, 12 insertions(+), 81 deletions(-) diff --git a/src/queries/__tests__/text.test.tsx b/src/queries/__tests__/text.test.tsx index d9a0b2d96..4ea1145b8 100644 --- a/src/queries/__tests__/text.test.tsx +++ b/src/queries/__tests__/text.test.tsx @@ -116,39 +116,6 @@ test('findByText queries work asynchronously', async () => { await expect(findAllByText('Some Text')).resolves.toHaveLength(1); }, 20000); -describe('findBy options deprecations', () => { - let warnSpy: jest.SpyInstance; - beforeEach(() => { - warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}); - }); - afterEach(() => { - warnSpy.mockRestore(); - }); - - test('findByText queries warn on deprecated use of WaitForOptions', async () => { - const options = { timeout: 10 }; - // mock implementation to avoid warning in the test suite - const { rerender, findByText } = render(); - await expect(findByText('Some Text', options)).rejects.toBeTruthy(); - - setTimeout( - () => - rerender( - - Some Text - - ), - 20 - ); - - await expect(findByText('Some Text')).resolves.toBeTruthy(); - - expect(warnSpy).toHaveBeenCalledWith( - expect.stringContaining('Use of option "timeout"') - ); - }, 20000); -}); - test('getByText works properly with custom text component', () => { function BoldText({ children }: ChildrenProps) { return {children}; diff --git a/src/queries/makeQueries.ts b/src/queries/makeQueries.ts index 0122259ab..68fff5299 100644 --- a/src/queries/makeQueries.ts +++ b/src/queries/makeQueries.ts @@ -25,13 +25,13 @@ export type QueryAllByQuery = ( export type FindByQuery = ( predicate: Predicate, - options?: Options & WaitForOptions, + options?: Options, waitForOptions?: WaitForOptions ) => Promise; export type FindAllByQuery = ( predicate: Predicate, - options?: Options & WaitForOptions, + options?: Options, waitForOptions?: WaitForOptions ) => Promise; @@ -46,36 +46,6 @@ export type UnboundQueries = { findAllBy: UnboundQuery>; }; -// The WaitForOptions has been moved to the second option param of findBy* methods with the adding of TextMatchOptions -// To make the migration easier and avoid a breaking change, keep reading this options from the first param but warn -const deprecatedKeys: (keyof WaitForOptions)[] = [ - 'timeout', - 'interval', - 'stackTraceError', -]; -const extractDeprecatedWaitForOptionUsage = (queryOptions?: WaitForOptions) => { - if (queryOptions) { - const waitForOptions: WaitForOptions = { - timeout: queryOptions.timeout, - interval: queryOptions.interval, - stackTraceError: queryOptions.stackTraceError, - }; - deprecatedKeys.forEach((key) => { - const option = queryOptions[key]; - if (option) { - // eslint-disable-next-line no-console - console.warn( - `Use of option "${key}" in a findBy* query's second parameter, TextMatchOptions, is deprecated. Please pass this option in the third, WaitForOptions, parameter. -Example: - - findByText(text, {}, { ${key}: ${option.toString()} })` - ); - } - }); - return waitForOptions; - } -}; - export function makeQueries( queryAllByQuery: UnboundQuery>, getMissingError: (predicate: Predicate) => string, @@ -128,32 +98,26 @@ export function makeQueries( function findAllByQuery(instance: ReactTestInstance) { return function findAllFn( predicate: Predicate, - queryOptions?: Options & WaitForOptions, - waitForOptions: WaitForOptions = {} + queryOptions?: Options, + waitForOptions?: WaitForOptions ) { - const deprecatedWaitForOptions = extractDeprecatedWaitForOptionUsage( - queryOptions + return waitFor( + () => getAllByQuery(instance)(predicate, queryOptions), + waitForOptions ); - return waitFor(() => getAllByQuery(instance)(predicate, queryOptions), { - ...deprecatedWaitForOptions, - ...waitForOptions, - }); }; } function findByQuery(instance: ReactTestInstance) { return function findFn( predicate: Predicate, - queryOptions?: Options & WaitForOptions, - waitForOptions: WaitForOptions = {} + queryOptions?: Options, + waitForOptions?: WaitForOptions ) { - const deprecatedWaitForOptions = extractDeprecatedWaitForOptionUsage( - queryOptions + return waitFor( + () => getByQuery(instance)(predicate, queryOptions), + waitForOptions ); - return waitFor(() => getByQuery(instance)(predicate, queryOptions), { - ...deprecatedWaitForOptions, - ...waitForOptions, - }); }; } From 6a65ed32949103048939aa266bf810eff702effb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Wed, 20 Jul 2022 14:46:15 +0200 Subject: [PATCH 14/14] v11.0.0-rc.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b7cff3244..e8545956b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@testing-library/react-native", - "version": "10.1.1", + "version": "11.0.0-rc.0", "description": "Simple and complete React Native testing utilities that encourage good testing practices.", "main": "build/index.js", "types": "build/index.d.ts",