From 175932594955e95d9aeb1fa926d8d3816990565f Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 14:05:20 -0500 Subject: [PATCH 001/130] update package-lock --- package-lock.json | 5551 ++++++++------------------------------------- 1 file changed, 922 insertions(+), 4629 deletions(-) diff --git a/package-lock.json b/package-lock.json index a4fd6324fd7e..ae98413bdb2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -485,6 +485,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -842,6 +843,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -856,6 +858,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1070,6 +1073,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", @@ -1098,6 +1102,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -1122,6 +1127,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1175,6 +1181,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" @@ -1201,6 +1208,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1215,6 +1223,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1229,6 +1238,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -1241,6 +1251,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -1267,6 +1278,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -1339,6 +1351,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1354,6 +1367,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1383,6 +1397,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1412,6 +1427,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -1473,6 +1489,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1488,6 +1505,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -1555,6 +1573,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1570,6 +1589,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1584,6 +1604,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1599,6 +1620,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1614,6 +1636,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1674,6 +1697,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1703,6 +1727,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1732,6 +1757,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1763,6 +1789,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.22.5", @@ -1780,6 +1807,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1810,6 +1838,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1824,6 +1853,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1839,6 +1869,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1867,6 +1898,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -1900,6 +1932,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1915,6 +1948,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1945,6 +1979,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1960,6 +1995,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.5", @@ -2090,6 +2126,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.1" @@ -2105,6 +2142,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2202,6 +2240,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2233,6 +2272,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2247,6 +2287,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -2277,6 +2318,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -2292,6 +2334,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -2385,6 +2428,7 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -2400,6 +2444,7 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, "engines": { "node": ">=6.9.0" }, @@ -2411,6 +2456,7 @@ "version": "0.4.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.4.2", @@ -2424,6 +2470,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.2", "core-js-compat": "^3.31.0" @@ -2436,6 +2483,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.2" }, @@ -2447,6 +2495,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -2468,6 +2517,7 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2612,6 +2662,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, "node_modules/@blakeembrey/deque": { @@ -3792,6 +3843,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", @@ -3808,6 +3860,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3817,6 +3870,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -3830,6 +3884,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -3842,6 +3897,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -3857,6 +3913,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -3869,6 +3926,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3878,6 +3936,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3885,6 +3944,7 @@ }, "node_modules/@jest/console": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.4.1", @@ -3902,6 +3962,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3918,6 +3979,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -3926,6 +3988,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3941,6 +4004,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -3957,6 +4021,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3969,12 +4034,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3984,6 +4051,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -3994,6 +4062,7 @@ }, "node_modules/@jest/core": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.4.1", @@ -4041,6 +4110,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4057,6 +4127,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4065,6 +4136,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4080,6 +4152,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4096,6 +4169,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4108,12 +4182,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4123,6 +4199,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4336,6 +4413,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", + "dev": true, "dependencies": { "expect": "^29.6.2", "jest-snapshot": "^29.6.2" @@ -4348,6 +4426,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", + "dev": true, "dependencies": { "jest-get-type": "^29.4.3" }, @@ -4463,6 +4542,7 @@ "version": "29.5.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, "dependencies": { "@jest/environment": "^29.5.0", "@jest/expect": "^29.5.0", @@ -4477,6 +4557,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4493,6 +4574,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4501,6 +4583,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4515,6 +4598,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4530,6 +4614,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -4540,12 +4625,14 @@ "node_modules/@jest/globals/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@jest/globals/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -4554,6 +4641,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4563,6 +4651,7 @@ }, "node_modules/@jest/reporters": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -4606,6 +4695,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4622,6 +4712,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4630,6 +4721,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4645,6 +4737,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4661,6 +4754,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4673,12 +4767,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4688,6 +4784,7 @@ "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "dependencies": { "@types/node": "*", "jest-util": "^29.6.3", @@ -4702,6 +4799,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4717,6 +4815,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4738,6 +4837,7 @@ }, "node_modules/@jest/source-map": { "version": "29.2.0", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.15", @@ -4750,6 +4850,7 @@ }, "node_modules/@jest/test-result": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.4.1", @@ -4765,6 +4866,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4781,6 +4883,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4789,6 +4892,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -4804,6 +4908,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -4820,6 +4925,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4832,12 +4938,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/@jest/test-result/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4847,6 +4955,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4857,6 +4966,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.4.1", @@ -4872,6 +4982,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", + "dev": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.1", @@ -4897,6 +5008,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4913,6 +5025,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4921,6 +5034,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4935,6 +5049,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4950,6 +5065,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -4960,17 +5076,20 @@ "node_modules/@jest/transform/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@jest/transform/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -4979,6 +5098,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4990,6 +5110,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -5289,19 +5410,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@lottiefiles/react-lottie-player": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@lottiefiles/react-lottie-player/-/react-lottie-player-3.5.3.tgz", - "integrity": "sha512-6pGbiTMjGnPddR1ur8M/TIDCiogZMc1aKIUbMEKXKAuNeYwZ2hvqwBJ+w5KRm88ccdcU88C2cGyLVsboFlSdVQ==", - "optional": true, - "peer": true, - "dependencies": { - "lottie-web": "^5.10.2" - }, - "peerDependencies": { - "react": "16 - 18" - } - }, "node_modules/@lwc/eslint-plugin-lwc": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-0.11.0.tgz", @@ -17102,259 +17210,6 @@ "node": ">=10.13.0" } }, - "node_modules/@storybook/mdx2-csf": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-0.0.3.tgz", - "integrity": "sha512-PFhucALIP23H3D/VyA4vlDsHKEJfhbLCIullmvaSl+KTTGbn4g+IkOAsIhVx+dEHYdCqCRW53r66+D4P6A7uOA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/generator": "^7.12.11", - "@babel/parser": "^7.12.11", - "@mdx-js/mdx": "^2.0.0", - "estree-to-babel": "^4.9.0", - "hast-util-to-estree": "^2.0.2", - "js-string-escape": "^1.0.1", - "loader-utils": "^2.0.0", - "lodash": "^4.17.21" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/@mdx-js/mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", - "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/estree-to-babel": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-4.9.0.tgz", - "integrity": "sha512-Ev5c4YJbMaozG8TCsRys74CViaRKnjllUpnJCrY3JB8DMlUQ0n0zgjCECEWN6ji7aAfYZvohwh6a2P0jl8A8Hw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/remark-mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", - "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/@storybook/node-logger": { "version": "6.5.10", "dev": true, @@ -18585,75 +18440,6 @@ "@tensorflow/tfjs-core": "^4.4.0" } }, - "node_modules/@tensorflow/tfjs-backend-cpu": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.9.0.tgz", - "integrity": "sha512-AHIfI3iD1fyQgQKeoQmtkI3exPWRfOo+W0Ws/bxOdapTXcAYWGg0179t52j8XPDwsl8WopfaTINNgYNG6FnP3Q==", - "peer": true, - "dependencies": { - "@types/seedrandom": "^2.4.28", - "seedrandom": "^3.0.5" - }, - "engines": { - "yarn": ">= 1.3.2" - }, - "peerDependencies": { - "@tensorflow/tfjs-core": "4.9.0" - } - }, - "node_modules/@tensorflow/tfjs-backend-webgl": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.9.0.tgz", - "integrity": "sha512-lSEOjR9zi6vb1V9yhrby8jWt6SS+wWBXRa3sDE5GCbpcHMWHv41wZktB2WQyIXDqJQcw1lRZBDoYneibMqr2uQ==", - "peer": true, - "dependencies": { - "@tensorflow/tfjs-backend-cpu": "4.9.0", - "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "seedrandom": "^3.0.5" - }, - "engines": { - "yarn": ">= 1.3.2" - }, - "peerDependencies": { - "@tensorflow/tfjs-core": "4.9.0" - } - }, - "node_modules/@tensorflow/tfjs-converter": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.9.0.tgz", - "integrity": "sha512-mRlzdG3jVsxMkFfHFgDNY10HMoh+vtfPPIghtY+Fc4U/ZnBUFvSfZqwEFyXfOJAewn4fY4BX8+6RE4a0kRXqGA==", - "peer": true, - "peerDependencies": { - "@tensorflow/tfjs-core": "4.9.0" - } - }, - "node_modules/@tensorflow/tfjs-core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.9.0.tgz", - "integrity": "sha512-1nYs9OA934eSI33eTvyCVJUEji2wnMXyZ3VK7l2iS/TPDFISI3ETyh286mW56LCihoniv8HH2MtOAQwo4Qhrdg==", - "peer": true, - "dependencies": { - "@types/long": "^4.0.1", - "@types/offscreencanvas": "~2019.7.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "@webgpu/types": "0.1.30", - "long": "4.0.0", - "node-fetch": "~2.6.1", - "seedrandom": "^3.0.5" - }, - "engines": { - "yarn": ">= 1.3.2" - } - }, - "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { - "version": "2019.7.0", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", - "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", - "peer": true - }, "node_modules/@testing-library/jest-native": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/@testing-library/jest-native/-/jest-native-5.4.1.tgz", @@ -19000,19 +18786,9 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/@types/babel__core": { "version": "7.1.19", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -19026,6 +18802,7 @@ "version": "7.6.4", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -19035,6 +18812,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -19043,6 +18821,7 @@ }, "node_modules/@types/babel__traverse": { "version": "7.18.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.3.0" @@ -19134,7 +18913,7 @@ }, "node_modules/@types/eslint": { "version": "8.4.6", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -19145,7 +18924,7 @@ "version": "3.7.4", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/eslint": "*", @@ -19156,19 +18935,8 @@ "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*" - } + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.13", @@ -19224,6 +18992,7 @@ }, "node_modules/@types/graceful-fs": { "version": "4.1.5", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -19371,7 +19140,7 @@ "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "devOptional": true + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -19583,14 +19352,6 @@ "@types/react": "*" } }, - "node_modules/@types/react-native": { - "version": "0.70.6", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/react-pdf": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/@types/react-pdf/-/react-pdf-5.7.2.tgz", @@ -20494,7 +20255,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/helper-code-frame": { "version": "1.9.0", @@ -20527,7 +20288,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -20538,13 +20299,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.9.0", @@ -20556,7 +20317,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -20568,7 +20329,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -20578,13 +20339,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "devOptional": true, + "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -20593,7 +20354,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "devOptional": true, + "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -20602,13 +20363,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -20624,7 +20385,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -20634,13 +20395,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/wast-printer": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -20650,7 +20411,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -20663,7 +20424,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -20673,13 +20434,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -20691,7 +20452,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -20701,13 +20462,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -20721,7 +20482,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -20731,13 +20492,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "node_modules/@webassemblyjs/wast-parser": { "version": "1.9.0", @@ -20765,12 +20526,6 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@webgpu/types": { - "version": "0.1.30", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.30.tgz", - "integrity": "sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==", - "peer": true - }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", @@ -20835,14 +20590,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { @@ -21163,6 +20918,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -21178,6 +20934,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -21836,17 +21593,6 @@ "node": ">=8" } }, - "node_modules/astring": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", - "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "astring": "bin/astring" - } - }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -22130,6 +21876,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.1.tgz", "integrity": "sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.4.1", @@ -22151,6 +21898,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -22166,6 +21914,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -22182,6 +21931,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -22194,12 +21944,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/babel-jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -22209,6 +21961,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -22451,6 +22204,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -22465,6 +22219,7 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.4.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -22684,6 +22439,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -22742,6 +22498,7 @@ }, "node_modules/babel-preset-jest": { "version": "29.4.0", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.4.0", @@ -23005,7 +22762,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -23990,6 +23747,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -24148,6 +23906,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -24243,7 +24002,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.0" @@ -24281,6 +24040,7 @@ }, "node_modules/cjs-module-lexer": { "version": "1.2.2", + "dev": true, "license": "MIT" }, "node_modules/class-utils": { @@ -24698,6 +24458,7 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.1", + "dev": true, "license": "MIT" }, "node_modules/collection-visit": { @@ -26324,33 +26085,6 @@ "dev": true, "license": "MIT" }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decode-named-character-reference/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -26392,6 +26126,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, "license": "MIT" }, "node_modules/deep-equal": { @@ -26721,6 +26456,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -26765,21 +26501,11 @@ "detect-port": "bin/detect-port.js" } }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff-sequences": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -27489,6 +27215,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -27507,7 +27234,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -27528,16 +27255,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -27601,7 +27318,7 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "devOptional": true, + "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -27614,7 +27331,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } @@ -27816,7 +27533,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "devOptional": true + "dev": true }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -28314,18 +28031,6 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react-hooks": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=7" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - } - }, "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -29184,7 +28889,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -29198,7 +28903,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -29477,7 +29182,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -29490,7 +29195,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -29511,125 +29216,11 @@ "node": ">=8.3.0" } }, - "node_modules/estree-util-attach-comments": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", - "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-attach-comments/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/estree-util-build-jsx": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", - "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-to-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", - "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-to-js/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/estree-util-visit": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", - "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/estree-walker/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -29727,6 +29318,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -29891,6 +29483,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", + "dev": true, "dependencies": { "@jest/expect-utils": "^29.6.2", "@types/node": "*", @@ -30303,6 +29896,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -30454,7 +30048,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", @@ -31308,6 +30902,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -31432,7 +31027,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause" }, "node_modules/global": { @@ -31954,117 +31549,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", - "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.1", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-estree/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/hast-util-to-estree/node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hast-util-to-estree/node_modules/property-information": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", - "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hast-util-to-estree/node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hast-util-to-estree/node_modules/style-to-object": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", - "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/hast-util-to-estree/node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-estree/node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/hast-util-to-parse5": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", @@ -32083,18 +31567,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hastscript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", @@ -32235,6 +31707,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, "license": "MIT" }, "node_modules/html-minifier-terser": { @@ -32821,7 +32294,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -32935,6 +32408,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", @@ -32954,6 +32428,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -32967,6 +32442,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -32979,6 +32455,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -32994,6 +32471,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -33006,6 +32484,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -33015,6 +32494,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" @@ -33607,6 +33087,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -33782,17 +33263,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-reference": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", - "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -34032,6 +33502,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" @@ -34039,6 +33510,7 @@ }, "node_modules/istanbul-lib-instrument": { "version": "5.2.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", @@ -34055,12 +33527,14 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { "version": "3.0.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -34075,6 +33549,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34084,6 +33559,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^6.0.0" @@ -34099,6 +33575,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -34107,6 +33584,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -34119,6 +33597,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", @@ -34131,6 +33610,7 @@ }, "node_modules/istanbul-reports": { "version": "3.1.5", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -34293,6 +33773,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.1.tgz", "integrity": "sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.4.1", @@ -34317,6 +33798,7 @@ }, "node_modules/jest-changed-files": { "version": "29.4.0", + "dev": true, "license": "MIT", "dependencies": { "execa": "^5.0.0", @@ -34330,6 +33812,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.1.tgz", "integrity": "sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.4.1", @@ -34360,6 +33843,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -34376,6 +33860,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -34384,6 +33869,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -34399,6 +33885,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -34415,6 +33902,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -34427,12 +33915,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34442,6 +33932,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -34454,6 +33945,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.1.tgz", "integrity": "sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==", + "dev": true, "license": "MIT", "dependencies": { "@jest/core": "^29.4.1", @@ -34488,6 +33980,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -34504,6 +33997,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -34512,6 +34006,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -34527,6 +34022,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -34543,6 +34039,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -34557,6 +34054,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -34569,12 +34067,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34584,6 +34084,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -34596,6 +34097,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -34605,6 +34107,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -34622,6 +34125,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -34629,6 +34133,7 @@ }, "node_modules/jest-config": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", @@ -34674,6 +34179,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -34690,6 +34196,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -34698,6 +34205,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -34713,6 +34221,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -34729,6 +34238,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -34741,12 +34251,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34756,6 +34268,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -34768,6 +34281,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", + "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", @@ -34782,6 +34296,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -34797,6 +34312,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -34813,6 +34329,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -34825,12 +34342,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34840,6 +34359,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -34850,6 +34370,7 @@ }, "node_modules/jest-docblock": { "version": "29.2.0", + "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" @@ -34860,6 +34381,7 @@ }, "node_modules/jest-each": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.4.1", @@ -34876,6 +34398,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -34892,6 +34415,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -34900,6 +34424,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -34915,6 +34440,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -34931,6 +34457,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -34943,12 +34470,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34958,6 +34487,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -35214,6 +34744,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", + "dev": true, "dependencies": { "@jest/types": "^29.6.1", "@types/graceful-fs": "^4.1.3", @@ -35238,6 +34769,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -35254,6 +34786,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -35262,6 +34795,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -35276,6 +34810,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -35291,6 +34826,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -35301,12 +34837,14 @@ "node_modules/jest-haste-map/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-haste-map/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -35315,6 +34853,7 @@ "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "dependencies": { "@types/node": "*", "jest-util": "^29.6.3", @@ -35329,6 +34868,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -35343,6 +34883,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -35352,6 +34893,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "jest-get-type": "^29.2.0", @@ -35365,6 +34907,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", + "dev": true, "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.6.2", @@ -35379,6 +34922,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -35394,6 +34938,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -35410,6 +34955,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -35422,12 +34968,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -35437,6 +34985,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -35657,6 +35206,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -35674,12 +35224,14 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -35698,6 +35250,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "^29.2.0", @@ -35711,6 +35264,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -35726,6 +35280,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -35742,6 +35297,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -35754,12 +35310,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -35769,6 +35327,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -35779,6 +35338,7 @@ }, "node_modules/jest-runner": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/console": "^29.4.1", @@ -35811,6 +35371,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -35827,6 +35388,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -35835,6 +35397,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -35850,6 +35413,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -35866,6 +35430,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -35878,12 +35443,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -35893,6 +35460,7 @@ "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "dependencies": { "@types/node": "*", "jest-util": "^29.6.3", @@ -35907,6 +35475,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -35922,6 +35491,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -35932,6 +35502,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -35942,6 +35513,7 @@ }, "node_modules/jest-runtime": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "^29.4.1", @@ -35976,6 +35548,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -35992,6 +35565,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -36000,6 +35574,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -36015,6 +35590,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -36031,6 +35607,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -36043,12 +35620,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -36058,6 +35637,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -36070,6 +35650,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", + "dev": true, "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -36100,6 +35681,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -36116,6 +35698,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -36124,6 +35707,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -36138,6 +35722,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -36153,6 +35738,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -36163,12 +35749,14 @@ "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -36177,6 +35765,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -36404,6 +35993,7 @@ }, "node_modules/jest-watcher": { "version": "29.4.1", + "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "^29.4.1", @@ -36423,6 +36013,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -36439,6 +36030,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -36447,6 +36039,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -36462,6 +36055,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -36478,6 +36072,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -36490,12 +36085,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -36505,6 +36102,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -36564,6 +36162,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -36580,6 +36179,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -36588,6 +36188,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -36603,6 +36204,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -36619,6 +36221,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -36631,12 +36234,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/jest/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -36646,6 +36251,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -37021,6 +36627,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/json-schema-migrate": { @@ -37286,6 +36893,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, "node_modules/load-json-file": { @@ -37350,7 +36958,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "devOptional": true, + "dev": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -37396,13 +37004,6 @@ "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", "license": "MIT" }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "peer": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -37698,18 +37299,6 @@ "node": ">=0.10.0" } }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -37745,12 +37334,6 @@ } } }, - "node_modules/lottie-web": { - "version": "5.10.2", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -37952,17 +37535,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/markdown-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", @@ -38063,406 +37635,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", - "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", - "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", - "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "mdast-util-from-markdown": "^1.1.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", - "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", - "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-hast": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", @@ -38484,103 +37656,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -38687,16 +37762,6 @@ "tslib": "2" } }, - "node_modules/memfs/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", @@ -39860,836 +38925,6 @@ "dev": true, "license": "MIT" }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", - "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-mdx-expression/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", - "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-jsx/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-extension-mdx-jsx/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-jsx/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", - "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", - "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^1.0.0", - "micromark-extension-mdx-jsx": "^1.0.0", - "micromark-extension-mdx-md": "^1.0.0", - "micromark-extension-mdxjs-esm": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", - "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-core-commonmark": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.1.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-extension-mdxjs-esm/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", - "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-factory-mdx-expression/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-factory-mdx-expression/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-mdx-expression/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", - "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "@types/unist": "^2.0.0", - "estree-util-visit": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-util-events-to-acorn/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-util-events-to-acorn/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-util-events-to-acorn/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true - }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -41028,17 +39263,6 @@ "rimraf": "bin.js" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -41132,6 +39356,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, "license": "MIT" }, "node_modules/negotiator": { @@ -42330,6 +40555,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -42700,27 +40926,6 @@ "dev": true, "license": "MIT" }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/periscopic/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -43744,21 +41949,6 @@ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" }, - "node_modules/quill-delta": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", - "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", - "dev": true, - "peer": true, - "dependencies": { - "fast-diff": "^1.3.0", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, "node_modules/raf-schd": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", @@ -46028,6 +44218,7 @@ "version": "0.15.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -46284,246 +44475,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-rehype/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark-rehype/node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-rehype/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-slug": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz", @@ -46727,6 +44678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" @@ -46767,6 +44719,7 @@ }, "node_modules/resolve.exports": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -46970,20 +44923,6 @@ "dev": true, "license": "0BSD" }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -47087,7 +45026,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "devOptional": true, + "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -47105,7 +45044,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -47122,7 +45061,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "devOptional": true, + "dev": true, "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" @@ -47132,7 +45071,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/seedrandom": { @@ -48572,6 +46511,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", @@ -48780,6 +46720,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -48820,6 +46761,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -49387,6 +47329,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -49774,18 +47717,6 @@ "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", "dev": true }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -50354,21 +48285,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position-from-estree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", - "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-remove": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", @@ -50855,37 +48771,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uvu/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -50895,6 +48780,7 @@ }, "node_modules/v8-to-istanbul": { "version": "9.0.1", + "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -51091,7 +48977,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -51436,7 +49322,7 @@ "version": "5.88.2", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", - "devOptional": true, + "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -52083,13 +49969,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "devOptional": true + "dev": true }, "node_modules/webpack/node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -52099,13 +49985,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "node_modules/webpack/node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "devOptional": true, + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -52117,7 +50003,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "devOptional": true, + "dev": true, "peerDependencies": { "acorn": "^8" } @@ -52126,7 +50012,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" } @@ -52135,7 +50021,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "devOptional": true, + "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -52149,7 +50035,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6.11.5" @@ -52159,7 +50045,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "devOptional": true, + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -52168,7 +50054,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -52183,7 +50069,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -52193,7 +50079,7 @@ "version": "5.3.9", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "devOptional": true, + "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -52227,7 +50113,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10.13.0" @@ -53179,6 +51065,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -53436,6 +51323,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -53444,6 +51332,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -53571,6 +51460,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -53588,6 +51478,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -53604,6 +51495,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -53633,6 +51525,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -53649,6 +51542,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -53657,6 +51551,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -53665,6 +51560,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -53673,6 +51569,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -53689,6 +51586,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -53737,6 +51635,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -53745,6 +51644,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -53761,6 +51661,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -53778,6 +51679,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -53815,6 +51717,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -53824,6 +51727,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -53867,6 +51771,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -53876,6 +51781,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -53884,6 +51790,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -53893,6 +51800,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -53902,6 +51810,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -53938,6 +51847,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -53955,6 +51865,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -53972,6 +51883,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -53991,6 +51903,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.22.5", @@ -54002,6 +51915,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -54020,6 +51934,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -54028,6 +51943,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -54037,6 +51953,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -54052,6 +51969,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dev": true, "requires": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -54073,6 +51991,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -54082,6 +52001,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -54100,6 +52020,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -54109,6 +52030,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.5", @@ -54178,6 +52100,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.1" @@ -54187,6 +52110,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -54246,6 +52170,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -54265,6 +52190,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -54273,6 +52199,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -54291,6 +52218,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -54300,6 +52228,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", + "dev": true, "requires": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -54387,6 +52316,7 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -54399,12 +52329,13 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "requires": {} + "dev": true }, "babel-plugin-polyfill-corejs2": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, "requires": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.4.2", @@ -54415,6 +52346,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.4.2", "core-js-compat": "^3.31.0" @@ -54424,6 +52356,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.4.2" } @@ -54431,7 +52364,8 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true } } }, @@ -54445,6 +52379,7 @@ }, "@babel/preset-modules": { "version": "0.1.5", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -54553,7 +52488,8 @@ "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "@blakeembrey/deque": { "version": "1.0.5", @@ -54790,8 +52726,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -54810,8 +52745,7 @@ "@dotlottie/react-player": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/@dotlottie/react-player/-/react-player-1.6.3.tgz", - "integrity": "sha512-wktLksV1LzV2qAAMocdBxn2e0J7XUraztLH2DnrlBYUgdy5Cz4FyV8+BPLftcyVD7r/4+0X448hEvK7tFQiLng==", - "requires": {} + "integrity": "sha512-wktLksV1LzV2qAAMocdBxn2e0J7XUraztLH2DnrlBYUgdy5Cz4FyV8+BPLftcyVD7r/4+0X448hEvK7tFQiLng==" }, "@dword-design/dedent": { "version": "0.7.0", @@ -54998,8 +52932,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", - "dev": true, - "requires": {} + "dev": true }, "@es-joy/jsdoccomment": { "version": "0.39.4", @@ -55459,6 +53392,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -55470,12 +53404,14 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -55485,6 +53421,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -55493,6 +53430,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -55501,6 +53439,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -55508,17 +53447,20 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true } } }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true }, "@jest/console": { "version": "29.4.1", + "dev": true, "requires": { "@jest/types": "^29.4.1", "@types/node": "*", @@ -55532,6 +53474,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -55545,6 +53488,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -55553,6 +53497,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -55561,6 +53506,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -55570,6 +53516,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -55577,17 +53524,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -55596,6 +53546,7 @@ }, "@jest/core": { "version": "29.4.1", + "dev": true, "requires": { "@jest/console": "^29.4.1", "@jest/reporters": "^29.4.1", @@ -55631,6 +53582,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -55644,6 +53596,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -55652,6 +53605,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -55660,6 +53614,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -55669,6 +53624,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -55676,17 +53632,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -55848,6 +53807,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", + "dev": true, "requires": { "expect": "^29.6.2", "jest-snapshot": "^29.6.2" @@ -55857,6 +53817,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", + "dev": true, "requires": { "jest-get-type": "^29.4.3" } @@ -55944,6 +53905,7 @@ "version": "29.5.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, "requires": { "@jest/environment": "^29.5.0", "@jest/expect": "^29.5.0", @@ -55955,6 +53917,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -55968,6 +53931,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -55976,6 +53940,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -55984,6 +53949,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -55993,6 +53959,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -56000,17 +53967,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -56019,6 +53989,7 @@ }, "@jest/reporters": { "version": "29.4.1", + "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.4.1", @@ -56050,6 +54021,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -56063,6 +54035,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -56071,6 +54044,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -56079,6 +54053,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -56088,6 +54063,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -56095,17 +54071,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "jest-worker": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "requires": { "@types/node": "*", "jest-util": "^29.6.3", @@ -56117,6 +54096,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -56127,6 +54107,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -56143,6 +54124,7 @@ }, "@jest/source-map": { "version": "29.2.0", + "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.15", "callsites": "^3.0.0", @@ -56151,6 +54133,7 @@ }, "@jest/test-result": { "version": "29.4.1", + "dev": true, "requires": { "@jest/console": "^29.4.1", "@jest/types": "^29.4.1", @@ -56162,6 +54145,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -56175,6 +54159,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -56183,6 +54168,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -56191,6 +54177,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -56200,6 +54187,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -56207,17 +54195,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -56226,6 +54217,7 @@ }, "@jest/test-sequencer": { "version": "29.4.1", + "dev": true, "requires": { "@jest/test-result": "^29.4.1", "graceful-fs": "^4.2.9", @@ -56237,6 +54229,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", + "dev": true, "requires": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.1", @@ -56259,6 +54252,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -56272,6 +54266,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -56280,6 +54275,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -56288,6 +54284,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -56297,6 +54294,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -56304,22 +54302,26 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -56328,6 +54330,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -56452,8 +54455,7 @@ "@jsamr/react-native-li": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@jsamr/react-native-li/-/react-native-li-2.3.1.tgz", - "integrity": "sha512-Qbo4NEj48SQ4k8FZJHFE2fgZDKTWaUGmVxcIQh3msg5JezLdTMMHuRRDYctfdHI6L0FZGObmEv3haWbIvmol8w==", - "requires": {} + "integrity": "sha512-Qbo4NEj48SQ4k8FZJHFE2fgZDKTWaUGmVxcIQh3msg5JezLdTMMHuRRDYctfdHI6L0FZGObmEv3haWbIvmol8w==" }, "@juggle/resize-observer": { "version": "3.4.0", @@ -56564,16 +54566,6 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@lottiefiles/react-lottie-player": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@lottiefiles/react-lottie-player/-/react-lottie-player-3.5.3.tgz", - "integrity": "sha512-6pGbiTMjGnPddR1ur8M/TIDCiogZMc1aKIUbMEKXKAuNeYwZ2hvqwBJ+w5KRm88ccdcU88C2cGyLVsboFlSdVQ==", - "optional": true, - "peer": true, - "requires": { - "lottie-web": "^5.10.2" - } - }, "@lwc/eslint-plugin-lwc": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-0.11.0.tgz", @@ -57095,8 +55087,7 @@ "@tensorflow/tfjs-converter": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz", - "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==", - "requires": {} + "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==" }, "@tensorflow/tfjs-core": { "version": "3.21.0", @@ -57132,8 +55123,7 @@ "@onfido/castor-icons": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/@onfido/castor-icons/-/castor-icons-2.19.0.tgz", - "integrity": "sha512-LUQDQztjvElC8xu7fINbmmxsS92S/aVNPJyY9AlNlHPTO/Xino71iK+gE8Zbptgcm8++pkqKb+FrZUd83khqHw==", - "requires": {} + "integrity": "sha512-LUQDQztjvElC8xu7fINbmmxsS92S/aVNPJyY9AlNlHPTO/Xino71iK+gE8Zbptgcm8++pkqKb+FrZUd83khqHw==" }, "@onfido/castor-tokens": { "version": "1.0.0-beta.6", @@ -57151,8 +55141,7 @@ "@onfido/react-native-sdk": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@onfido/react-native-sdk/-/react-native-sdk-8.3.0.tgz", - "integrity": "sha512-nnhuvezd35v08WXUTQlX+gr4pbnNnwNV5KscC/jJrfjGikNUJnhnAHYxfnfJccTn44qUC6vRaKWq2GfpMUnqNA==", - "requires": {} + "integrity": "sha512-nnhuvezd35v08WXUTQlX+gr4pbnNnwNV5KscC/jJrfjGikNUJnhnAHYxfnfJccTn44qUC6vRaKWq2GfpMUnqNA==" }, "@pkgjs/parseargs": { "version": "0.11.0", @@ -57479,14 +55468,12 @@ "@react-native-camera-roll/camera-roll": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-5.4.0.tgz", - "integrity": "sha512-SMEhc+2hQWubwzxR6Zac0CmrJ2rdoHHBo0ibG2iNMsxR0dnU5AdRGnYF/tyK9i20/i7ZNxn+qsEJ69shpkd6gg==", - "requires": {} + "integrity": "sha512-SMEhc+2hQWubwzxR6Zac0CmrJ2rdoHHBo0ibG2iNMsxR0dnU5AdRGnYF/tyK9i20/i7ZNxn+qsEJ69shpkd6gg==" }, "@react-native-clipboard/clipboard": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.12.1.tgz", - "integrity": "sha512-+PNk8kflpGte0W1Nz61/Dp8gHTxyuRjkVyRYBawymSIGTDHCC/zOJSbig6kGIkD8MeaGHC2vGYQJyUyCrgVPBQ==", - "requires": {} + "integrity": "sha512-+PNk8kflpGte0W1Nz61/Dp8gHTxyuRjkVyRYBawymSIGTDHCC/zOJSbig6kGIkD8MeaGHC2vGYQJyUyCrgVPBQ==" }, "@react-native-community/cli": { "version": "11.3.6", @@ -58531,8 +56518,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" }, "y18n": { "version": "5.0.8", @@ -58621,8 +56607,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" } } }, @@ -58778,8 +56763,7 @@ "version": "22.4.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz", "integrity": "sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -58790,18 +56774,15 @@ "@react-native-community/geolocation": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@react-native-community/geolocation/-/geolocation-3.0.6.tgz", - "integrity": "sha512-+iidKFgw1HxCJSHVnlywAKu6uerdpDAKTXLRnlsUdhgqtgTiIixb496Z267iPVFmIO1bp4lOU6UiwzmvcyXdbg==", - "requires": {} + "integrity": "sha512-+iidKFgw1HxCJSHVnlywAKu6uerdpDAKTXLRnlsUdhgqtgTiIixb496Z267iPVFmIO1bp4lOU6UiwzmvcyXdbg==" }, "@react-native-community/netinfo": { - "version": "9.3.10", - "requires": {} + "version": "9.3.10" }, "@react-native-firebase/analytics": { "version": "12.9.3", "resolved": "https://registry.npmjs.org/@react-native-firebase/analytics/-/analytics-12.9.3.tgz", - "integrity": "sha512-z4OPppeqDlcoWe75MI+6FFZMd4jSkWw1Tya8px05TTnjwWcl0nclzUbloicWLrSnhxSyRrUSgxrreiConI/E4g==", - "requires": {} + "integrity": "sha512-z4OPppeqDlcoWe75MI+6FFZMd4jSkWw1Tya8px05TTnjwWcl0nclzUbloicWLrSnhxSyRrUSgxrreiConI/E4g==" }, "@react-native-firebase/app": { "version": "12.9.3", @@ -58833,12 +56814,10 @@ "@react-native-google-signin/google-signin": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/@react-native-google-signin/google-signin/-/google-signin-10.0.1.tgz", - "integrity": "sha512-oZoU2lfKyn0s0GqqdFsi4v2FSENrxQYQU9DD/RSkxDdkIQ49Wwo6p5LKlgXY04GwZEVdYMuvZN3G89gQW0ig2g==", - "requires": {} + "integrity": "sha512-oZoU2lfKyn0s0GqqdFsi4v2FSENrxQYQU9DD/RSkxDdkIQ49Wwo6p5LKlgXY04GwZEVdYMuvZN3G89gQW0ig2g==" }, "@react-native-picker/picker": { - "version": "2.4.4", - "requires": {} + "version": "2.4.4" }, "@react-native/assets-registry": { "version": "0.72.0", @@ -58960,8 +56939,7 @@ "@react-navigation/elements": { "version": "1.3.17", "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.17.tgz", - "integrity": "sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==", - "requires": {} + "integrity": "sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==" } } }, @@ -60316,8 +58294,7 @@ "version": "0.0.19--canary.37.cb55428.0", "resolved": "https://registry.npmjs.org/@storybook/addon-react-native-web/-/addon-react-native-web-0.0.19--canary.37.cb55428.0.tgz", "integrity": "sha512-UginW4pwf5hZhsv/Uw2RlCtZNv9ALbOk2SsKaIMhk+NWX/vRXTb/is5FG8B9aiQDMIq38eXYEE6TPh7URNpOlA==", - "dev": true, - "requires": {} + "dev": true }, "@storybook/addon-toolbars": { "version": "7.2.1", @@ -61085,8 +59062,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-regex": { "version": "2.1.1", @@ -61745,8 +59721,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz", "integrity": "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==", - "dev": true, - "requires": {} + "dev": true }, "yallist": { "version": "3.1.1", @@ -61822,8 +59797,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "babel-loader": { "version": "8.3.0", @@ -61899,8 +59873,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "jest-worker": { "version": "27.5.1", @@ -62014,8 +59987,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.3", @@ -62411,8 +60383,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -63128,8 +61099,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -63695,8 +61665,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.1.4.tgz", "integrity": "sha512-Aq9meChGlul/km0ywJvC8entRbjBa4q8i/0wLHLzH8pRmCMMtalTbF/OBn/Whiui7sgAa686jrMHkWlzfoQ0lg==", - "dev": true, - "requires": {} + "dev": true }, "@storybook/manager-api": { "version": "7.2.1", @@ -63971,8 +61940,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-regex": { "version": "2.1.1", @@ -64721,8 +62689,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -64822,8 +62789,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "jest-worker": { "version": "27.5.1", @@ -64954,8 +62920,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.3", @@ -65066,204 +63031,6 @@ } } }, - "@storybook/mdx2-csf": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-0.0.3.tgz", - "integrity": "sha512-PFhucALIP23H3D/VyA4vlDsHKEJfhbLCIullmvaSl+KTTGbn4g+IkOAsIhVx+dEHYdCqCRW53r66+D4P6A7uOA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/generator": "^7.12.11", - "@babel/parser": "^7.12.11", - "@mdx-js/mdx": "^2.0.0", - "estree-to-babel": "^4.9.0", - "hast-util-to-estree": "^2.0.2", - "js-string-escape": "^1.0.1", - "loader-utils": "^2.0.0", - "lodash": "^4.17.21" - }, - "dependencies": { - "@mdx-js/mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", - "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - } - }, - "bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "optional": true, - "peer": true - }, - "estree-to-babel": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-4.9.0.tgz", - "integrity": "sha512-Ev5c4YJbMaozG8TCsRys74CViaRKnjllUpnJCrY3JB8DMlUQ0n0zgjCECEWN6ji7aAfYZvohwh6a2P0jl8A8Hw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.2.0" - } - }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "optional": true, - "peer": true - }, - "remark-mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", - "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" - } - }, - "remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, - "trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "dev": true, - "optional": true, - "peer": true - }, - "unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, "@storybook/node-logger": { "version": "6.5.10", "dev": true, @@ -65596,8 +63363,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.2.1.tgz", "integrity": "sha512-QzQQN2nZkG7c0Mg5HvhfQuH10HjAJEnA8vDlENIFMj3XqtUAq4HE2n73gEcvdFJMXL4G16N58+TgR1e2cFdRKw==", - "dev": true, - "requires": {} + "dev": true }, "@storybook/router": { "version": "6.5.10", @@ -65866,53 +63632,45 @@ "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-remove-jsx-attribute": { "version": "6.5.0", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "6.5.0", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-svg-dynamic-title": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-svg-em-dimensions": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-transform-react-native-svg": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-plugin-transform-svg-component": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", - "dev": true, - "requires": {} + "dev": true }, "@svgr/babel-preset": { "version": "6.5.1", @@ -66060,60 +63818,6 @@ "tslib": "2.4.0" } }, - "@tensorflow/tfjs-backend-cpu": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.9.0.tgz", - "integrity": "sha512-AHIfI3iD1fyQgQKeoQmtkI3exPWRfOo+W0Ws/bxOdapTXcAYWGg0179t52j8XPDwsl8WopfaTINNgYNG6FnP3Q==", - "peer": true, - "requires": { - "@types/seedrandom": "^2.4.28", - "seedrandom": "^3.0.5" - } - }, - "@tensorflow/tfjs-backend-webgl": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.9.0.tgz", - "integrity": "sha512-lSEOjR9zi6vb1V9yhrby8jWt6SS+wWBXRa3sDE5GCbpcHMWHv41wZktB2WQyIXDqJQcw1lRZBDoYneibMqr2uQ==", - "peer": true, - "requires": { - "@tensorflow/tfjs-backend-cpu": "4.9.0", - "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "seedrandom": "^3.0.5" - } - }, - "@tensorflow/tfjs-converter": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.9.0.tgz", - "integrity": "sha512-mRlzdG3jVsxMkFfHFgDNY10HMoh+vtfPPIghtY+Fc4U/ZnBUFvSfZqwEFyXfOJAewn4fY4BX8+6RE4a0kRXqGA==", - "peer": true, - "requires": {} - }, - "@tensorflow/tfjs-core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.9.0.tgz", - "integrity": "sha512-1nYs9OA934eSI33eTvyCVJUEji2wnMXyZ3VK7l2iS/TPDFISI3ETyh286mW56LCihoniv8HH2MtOAQwo4Qhrdg==", - "peer": true, - "requires": { - "@types/long": "^4.0.1", - "@types/offscreencanvas": "~2019.7.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "@webgpu/types": "0.1.30", - "long": "4.0.0", - "node-fetch": "~2.6.1", - "seedrandom": "^3.0.5" - }, - "dependencies": { - "@types/offscreencanvas": { - "version": "2019.7.0", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", - "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", - "peer": true - } - } - }, "@testing-library/jest-native": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/@testing-library/jest-native/-/jest-native-5.4.1.tgz", @@ -66357,19 +64061,9 @@ "@turf/meta": "^6.5.0" } }, - "@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "*" - } - }, "@types/babel__core": { "version": "7.1.19", + "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -66382,6 +64076,7 @@ "version": "7.6.4", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, "requires": { "@babel/types": "^7.0.0" } @@ -66390,6 +64085,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -66397,6 +64093,7 @@ }, "@types/babel__traverse": { "version": "7.18.0", + "dev": true, "requires": { "@babel/types": "^7.3.0" } @@ -66480,7 +64177,7 @@ }, "@types/eslint": { "version": "8.4.6", - "devOptional": true, + "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -66490,7 +64187,7 @@ "version": "3.7.4", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "devOptional": true, + "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -66500,18 +64197,7 @@ "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "devOptional": true - }, - "@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "*" - } + "dev": true }, "@types/express": { "version": "4.17.13", @@ -66564,6 +64250,7 @@ }, "@types/graceful-fs": { "version": "4.1.5", + "dev": true, "requires": { "@types/node": "*" } @@ -66692,7 +64379,7 @@ "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "devOptional": true + "dev": true }, "@types/json5": { "version": "0.0.29", @@ -66886,13 +64573,6 @@ "@types/react": "*" } }, - "@types/react-native": { - "version": "0.70.6", - "peer": true, - "requires": { - "@types/react": "*" - } - }, "@types/react-pdf": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/@types/react-pdf/-/react-pdf-5.7.2.tgz", @@ -67455,8 +65135,7 @@ "@ua/react-native-airship": { "version": "15.2.6", "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-15.2.6.tgz", - "integrity": "sha512-dVlBPPYXD/4SEshv/X7mmt3xF8WfnNqiSNzCyqJSLAZ1aJuPpP9Z5WemCYsa2iv6goRZvtJSE4P79QKlfoTwXw==", - "requires": {} + "integrity": "sha512-dVlBPPYXD/4SEshv/X7mmt3xF8WfnNqiSNzCyqJSLAZ1aJuPpP9Z5WemCYsa2iv6goRZvtJSE4P79QKlfoTwXw==" }, "@vercel/ncc": { "version": "0.38.1", @@ -67491,7 +65170,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "devOptional": true + "dev": true }, "@webassemblyjs/helper-code-frame": { "version": "1.9.0", @@ -67521,7 +65200,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -67532,13 +65211,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "devOptional": true + "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "devOptional": true + "dev": true } } }, @@ -67552,7 +65231,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -67564,7 +65243,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -67574,7 +65253,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true } } }, @@ -67582,7 +65261,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "devOptional": true, + "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -67591,7 +65270,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "devOptional": true, + "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -67600,13 +65279,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "devOptional": true + "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -67622,7 +65301,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -67632,13 +65311,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "@webassemblyjs/wast-printer": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -67650,7 +65329,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -67663,7 +65342,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -67673,7 +65352,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true } } }, @@ -67681,7 +65360,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -67693,7 +65372,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -67703,7 +65382,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true } } }, @@ -67711,7 +65390,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -67725,7 +65404,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -67735,13 +65414,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "devOptional": true + "dev": true }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true } } }, @@ -67770,18 +65449,11 @@ "@xtuc/long": "4.2.2" } }, - "@webgpu/types": { - "version": "0.1.30", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.30.tgz", - "integrity": "sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==", - "peer": true - }, "@webpack-cli/configtest": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} + "dev": true }, "@webpack-cli/info": { "version": "1.5.0", @@ -67796,8 +65468,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} + "dev": true }, "@welldone-software/why-did-you-render": { "version": "7.0.1", @@ -67817,13 +65488,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "devOptional": true + "dev": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "devOptional": true + "dev": true }, "@yarnpkg/lockfile": { "version": "1.1.0", @@ -67894,8 +65565,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "7.2.0", @@ -67986,8 +65656,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-formats": { "version": "2.1.1", @@ -68001,8 +65670,7 @@ "ajv-keywords": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==", - "requires": {} + "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==" }, "align-text": { "version": "0.1.4", @@ -68053,6 +65721,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "requires": { "type-fest": "^0.21.3" }, @@ -68060,7 +65729,8 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true } } }, @@ -68559,14 +66229,6 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "astring": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", - "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", - "dev": true, - "optional": true, - "peer": true - }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -68716,8 +66378,7 @@ "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "requires": {} + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" }, "babel-eslint": { "version": "10.1.0", @@ -68768,6 +66429,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.1.tgz", "integrity": "sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg==", + "dev": true, "requires": { "@jest/transform": "^29.4.1", "@types/babel__core": "^7.1.14", @@ -68782,6 +66444,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -68790,6 +66453,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -68799,6 +66463,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -68806,17 +66471,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -68984,6 +66652,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -68994,6 +66663,7 @@ }, "babel-plugin-jest-hoist": { "version": "29.4.0", + "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -69170,6 +66840,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, "requires": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -69221,6 +66892,7 @@ }, "babel-preset-jest": { "version": "29.4.0", + "dev": true, "requires": { "babel-plugin-jest-hoist": "^29.4.0", "babel-preset-current-node-syntax": "^1.0.0" @@ -69419,7 +67091,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "devOptional": true + "dev": true }, "bin-links": { "version": "4.0.2", @@ -70158,7 +67830,8 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true }, "camel-case": { "version": "4.1.2", @@ -70257,7 +67930,8 @@ "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true }, "character-entities": { "version": "1.2.4", @@ -70312,7 +67986,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "devOptional": true + "dev": true }, "chromium-pickle-js": { "version": "0.2.0", @@ -70335,7 +68009,8 @@ } }, "cjs-module-lexer": { - "version": "1.2.2" + "version": "1.2.2", + "dev": true }, "class-utils": { "version": "0.3.6", @@ -70626,7 +68301,8 @@ "dev": true }, "collect-v8-coverage": { - "version": "1.0.1" + "version": "1.0.1", + "dev": true }, "collection-visit": { "version": "1.0.0", @@ -71560,8 +69236,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "picocolors": { "version": "1.0.0", @@ -71584,8 +69259,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.3", @@ -71775,8 +69449,7 @@ "date-fns-tz": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.0.tgz", - "integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==", - "requires": {} + "integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==" }, "dayjs": { "version": "1.11.10", @@ -71807,27 +69480,6 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "character-entities": "^2.0.0" - }, - "dependencies": { - "character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -71853,7 +69505,8 @@ "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true }, "deep-equal": { "version": "2.0.5", @@ -72088,7 +69741,8 @@ "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true }, "detect-node": { "version": "2.1.0", @@ -72119,18 +69773,11 @@ "debug": "4" } }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "optional": true, - "peer": true - }, "diff-sequences": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==" + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true }, "diff-so-fancy": { "version": "1.4.3", @@ -72673,7 +70320,8 @@ "emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true }, "emoji-regex": { "version": "8.0.0", @@ -72684,7 +70332,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "devOptional": true + "dev": true }, "encode-utf8": { "version": "1.0.3", @@ -72696,16 +70344,6 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -72737,8 +70375,7 @@ }, "dependencies": { "ws": { - "version": "8.2.3", - "requires": {} + "version": "8.2.3" } } }, @@ -72749,7 +70386,7 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "devOptional": true, + "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -72759,7 +70396,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "devOptional": true + "dev": true } } }, @@ -72920,7 +70557,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "devOptional": true + "dev": true }, "es-set-tostringtag": { "version": "2.0.1", @@ -73428,12 +71065,6 @@ } } }, - "eslint-plugin-react-hooks": { - "version": "1.7.0", - "dev": true, - "peer": true, - "requires": {} - }, "eslint-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", @@ -73663,8 +71294,7 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "requires": {} + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -73945,8 +71575,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-react-native": { "version": "3.11.0", @@ -74023,7 +71652,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "devOptional": true, + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -74033,7 +71662,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "devOptional": true + "dev": true } } }, @@ -74089,7 +71718,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "devOptional": true, + "dev": true, "requires": { "estraverse": "^5.2.0" } @@ -74098,7 +71727,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true + "dev": true }, "estree-to-babel": { "version": "3.2.1", @@ -74111,108 +71740,11 @@ "c8": "^7.6.0" } }, - "estree-util-attach-comments": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", - "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "estree-util-build-jsx": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", - "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" - } - }, - "estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, - "optional": true, - "peer": true - }, - "estree-util-to-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", - "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "estree-util-visit": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", - "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" - } - }, - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", @@ -74282,7 +71814,8 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true }, "expand-brackets": { "version": "2.1.4", @@ -74407,6 +71940,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", + "dev": true, "requires": { "@jest/expect-utils": "^29.6.2", "@types/node": "*", @@ -74717,7 +72251,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -74826,7 +72361,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "devOptional": true, + "dev": true, "requires": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -75140,8 +72675,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -75429,7 +72963,8 @@ "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true }, "get-stdin": { "version": "6.0.0", @@ -75506,7 +73041,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "devOptional": true + "dev": true }, "global": { "version": "4.4.0", @@ -75868,95 +73403,6 @@ "zwitch": "^1.0.0" } }, - "hast-util-to-estree": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", - "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.1", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "optional": true, - "peer": true - }, - "property-information": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", - "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", - "dev": true, - "optional": true, - "peer": true - }, - "space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "optional": true, - "peer": true - }, - "style-to-object": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", - "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "inline-style-parser": "0.1.1" - } - }, - "unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "hast-util-to-parse5": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", @@ -75970,14 +73416,6 @@ "zwitch": "^1.0.0" } }, - "hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "dev": true, - "optional": true, - "peer": true - }, "hastscript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", @@ -76093,7 +73531,8 @@ "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "html-minifier-terser": { "version": "6.1.0", @@ -76507,7 +73946,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -76578,6 +74017,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -76587,6 +74027,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -76596,6 +74037,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -76604,6 +74046,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -76612,6 +74055,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -76619,12 +74063,14 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "requires": { "find-up": "^4.0.0" } @@ -77011,7 +74457,8 @@ "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true }, "is-generator-function": { "version": "1.0.10", @@ -77116,17 +74563,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "is-reference": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", - "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "*" - } - }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -77273,10 +74709,12 @@ "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true }, "istanbul-lib-instrument": { "version": "5.2.0", + "dev": true, "requires": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -77288,12 +74726,14 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true } } }, "istanbul-lib-report": { "version": "3.0.0", + "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -77303,12 +74743,14 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "requires": { "semver": "^6.0.0" } @@ -77316,12 +74758,14 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -77332,6 +74776,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "requires": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -77340,6 +74785,7 @@ }, "istanbul-reports": { "version": "3.1.5", + "dev": true, "requires": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -77457,6 +74903,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.1.tgz", "integrity": "sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==", + "dev": true, "requires": { "@jest/core": "^29.4.1", "@jest/types": "^29.4.1", @@ -77468,6 +74915,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -77481,6 +74929,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -77489,6 +74938,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -77497,6 +74947,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -77506,6 +74957,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -77513,17 +74965,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -77532,6 +74987,7 @@ }, "jest-changed-files": { "version": "29.4.0", + "dev": true, "requires": { "execa": "^5.0.0", "p-limit": "^3.1.0" @@ -77541,6 +74997,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.1.tgz", "integrity": "sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA==", + "dev": true, "requires": { "@jest/environment": "^29.4.1", "@jest/expect": "^29.4.1", @@ -77567,6 +75024,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -77580,6 +75038,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -77588,6 +75047,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -77596,6 +75056,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -77605,6 +75066,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -77612,17 +75074,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -77633,6 +75098,7 @@ "version": "29.4.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.1.tgz", "integrity": "sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==", + "dev": true, "requires": { "@jest/core": "^29.4.1", "@jest/test-result": "^29.4.1", @@ -77652,6 +75118,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -77665,6 +75132,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -77673,6 +75141,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -77681,6 +75150,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -77690,6 +75160,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -77700,6 +75171,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -77707,17 +75179,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -77725,12 +75200,14 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -77744,12 +75221,14 @@ "yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } }, "jest-config": { "version": "29.4.1", + "dev": true, "requires": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.4.1", @@ -77779,6 +75258,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -77792,6 +75272,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -77800,6 +75281,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -77808,6 +75290,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -77817,6 +75300,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -77824,17 +75308,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -77845,6 +75332,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", + "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", @@ -77856,6 +75344,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -77864,6 +75353,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -77873,6 +75363,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -77880,17 +75371,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -77899,12 +75393,14 @@ }, "jest-docblock": { "version": "29.2.0", + "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { "version": "29.4.1", + "dev": true, "requires": { "@jest/types": "^29.4.1", "chalk": "^4.0.0", @@ -77917,6 +75413,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -77930,6 +75427,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -77938,6 +75436,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -77946,6 +75445,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -77955,6 +75455,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -77962,17 +75463,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78151,6 +75655,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", + "dev": true, "requires": { "@jest/types": "^29.6.1", "@types/graceful-fs": "^4.1.3", @@ -78170,6 +75675,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -78183,6 +75689,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -78191,6 +75698,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -78199,6 +75707,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -78208,6 +75717,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -78215,17 +75725,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "jest-worker": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "requires": { "@types/node": "*", "jest-util": "^29.6.3", @@ -78237,6 +75750,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78247,6 +75761,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78255,6 +75770,7 @@ }, "jest-leak-detector": { "version": "29.4.1", + "dev": true, "requires": { "jest-get-type": "^29.2.0", "pretty-format": "^29.4.1" @@ -78264,6 +75780,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", + "dev": true, "requires": { "chalk": "^4.0.0", "jest-diff": "^29.6.2", @@ -78275,6 +75792,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -78283,6 +75801,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -78292,6 +75811,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -78299,17 +75819,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78478,15 +76001,17 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "requires": {} + "dev": true }, "jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==" + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true }, "jest-resolve": { "version": "29.4.1", + "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -78503,6 +76028,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -78511,6 +76037,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -78520,6 +76047,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -78527,17 +76055,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78546,6 +76077,7 @@ }, "jest-resolve-dependencies": { "version": "29.4.1", + "dev": true, "requires": { "jest-regex-util": "^29.2.0", "jest-snapshot": "^29.4.1" @@ -78553,6 +76085,7 @@ }, "jest-runner": { "version": "29.4.1", + "dev": true, "requires": { "@jest/console": "^29.4.1", "@jest/environment": "^29.4.1", @@ -78581,6 +76114,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -78594,6 +76128,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -78602,6 +76137,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -78610,6 +76146,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -78619,6 +76156,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -78626,17 +76164,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "jest-worker": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "requires": { "@types/node": "*", "jest-util": "^29.6.3", @@ -78648,6 +76189,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78658,6 +76200,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -78667,6 +76210,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78675,6 +76219,7 @@ }, "jest-runtime": { "version": "29.4.1", + "dev": true, "requires": { "@jest/environment": "^29.4.1", "@jest/fake-timers": "^29.4.1", @@ -78705,6 +76250,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -78718,6 +76264,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -78726,6 +76273,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -78734,6 +76282,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -78743,6 +76292,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -78750,17 +76300,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78771,6 +76324,7 @@ "version": "29.6.2", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", + "dev": true, "requires": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -78798,6 +76352,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -78811,6 +76366,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -78819,6 +76375,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -78827,6 +76384,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -78836,6 +76394,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -78843,17 +76402,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -78864,8 +76426,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/jest-transformer-svg/-/jest-transformer-svg-2.0.1.tgz", "integrity": "sha512-L3j70WjfQtAYXjZi/vyKW8A5pcEUnv7mR0cugSyP6Kqee+fjsMzUHs5UPbnLKH+y7lfSpOjXijMbfEcjLqCuaw==", - "dev": true, - "requires": {} + "dev": true }, "jest-util": { "version": "29.6.3", @@ -79027,6 +76588,7 @@ }, "jest-watcher": { "version": "29.4.1", + "dev": true, "requires": { "@jest/test-result": "^29.4.1", "@jest/types": "^29.4.1", @@ -79042,6 +76604,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -79055,6 +76618,7 @@ "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -79063,6 +76627,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -79071,6 +76636,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -79080,6 +76646,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -79087,17 +76654,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -79107,8 +76677,7 @@ "jest-when": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/jest-when/-/jest-when-3.5.2.tgz", - "integrity": "sha512-4rDvnhaWh08RcPsoEVXgxRnUIE9wVIbZtGqZ5x2Wm9Ziz9aQs89PipQFmOK0ycbEhVAgiV3MUeTXp3Ar4s2FcQ==", - "requires": {} + "integrity": "sha512-4rDvnhaWh08RcPsoEVXgxRnUIE9wVIbZtGqZ5x2Wm9Ziz9aQs89PipQFmOK0ycbEhVAgiV3MUeTXp3Ar4s2FcQ==" }, "jest-worker": { "version": "26.6.2", @@ -79404,7 +76973,8 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-schema-migrate": { "version": "2.0.0", @@ -79600,7 +77170,8 @@ "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "load-json-file": { "version": "1.1.0", @@ -79646,7 +77217,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "devOptional": true, + "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -79679,13 +77250,6 @@ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "peer": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -79906,14 +77470,6 @@ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==" }, - "longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "dev": true, - "optional": true, - "peer": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -79925,13 +77481,7 @@ "lottie-react-native": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.4.0.tgz", - "integrity": "sha512-wFO/gLPN1KliyznBa8OtYWkc9Vn9OEmIg1/b1536KANFtGaFAeoAGhijVxYKF3UPKJgjJYFmqg0W//FVrSXj+g==", - "requires": {} - }, - "lottie-web": { - "version": "5.10.2", - "optional": true, - "peer": true + "integrity": "sha512-wFO/gLPN1KliyznBa8OtYWkc9Vn9OEmIg1/b1536KANFtGaFAeoAGhijVxYKF3UPKJgjJYFmqg0W//FVrSXj+g==" }, "loud-rejection": { "version": "1.6.0", @@ -80085,14 +77635,6 @@ "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", "dev": true }, - "markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "dev": true, - "optional": true, - "peer": true - }, "markdown-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", @@ -80106,8 +77648,7 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", - "dev": true, - "requires": {} + "dev": true }, "matcher": { "version": "3.0.0", @@ -80163,312 +77704,6 @@ "unist-util-visit": "^2.0.0" } }, - "mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - } - } - }, - "mdast-util-mdx": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", - "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "mdast-util-mdx-expression": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", - "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "mdast-util-mdx-jsx": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", - "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "mdast-util-from-markdown": "^1.1.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "dependencies": { - "ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "optional": true, - "peer": true - }, - "character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "optional": true, - "peer": true - }, - "character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "optional": true, - "peer": true - }, - "character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "optional": true, - "peer": true - }, - "character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "dev": true, - "optional": true, - "peer": true - }, - "is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "optional": true, - "peer": true - }, - "is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - } - }, - "is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "dev": true, - "optional": true, - "peer": true - }, - "is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "dev": true, - "optional": true, - "peer": true - }, - "parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - } - }, - "stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - } - }, - "unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-remove-position": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", - "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, - "mdast-util-mdxjs-esm": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", - "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - } - }, - "mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - } - } - }, "mdast-util-to-hast": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", @@ -80485,81 +77720,6 @@ "unist-util-visit": "^2.0.0" } }, - "mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0" - } - }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -80619,16 +77779,6 @@ "arg": "^5.0.2", "hyperdyperid": "^1.2.0" } - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "peer": true, - "requires": { - "tslib": "^2.1.0" - } } } }, @@ -80988,8 +78138,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true }, "y18n": { "version": "5.0.8", @@ -81306,8 +78455,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true }, "y18n": { "version": "5.0.8", @@ -81527,554 +78675,6 @@ "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", "dev": true }, - "micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "micromark-extension-mdx-expression": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", - "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "micromark-extension-mdx-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", - "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, - "micromark-extension-mdx-md": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", - "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-types": "^1.0.0" - } - }, - "micromark-extension-mdxjs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", - "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^1.0.0", - "micromark-extension-mdx-jsx": "^1.0.0", - "micromark-extension-mdx-md": "^1.0.0", - "micromark-extension-mdxjs-esm": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "dependencies": { - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "micromark-extension-mdxjs-esm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", - "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0", - "micromark-core-commonmark": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.1.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, - "micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-factory-mdx-expression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", - "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, - "micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "dev": true, - "optional": true, - "peer": true - }, - "micromark-util-events-to-acorn": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", - "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "@types/unist": "^2.0.0", - "estree-util-visit": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, - "micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "dev": true, - "optional": true, - "peer": true - }, - "micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-types": "^1.0.0" - } - }, - "micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "dev": true, - "optional": true, - "peer": true - }, - "micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "dev": true, - "optional": true, - "peer": true - }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -82318,14 +78918,6 @@ } } }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "optional": true, - "peer": true - }, "mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -82392,7 +78984,8 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "negotiator": { "version": "0.6.3", @@ -83256,6 +79849,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -83506,29 +80100,6 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -84245,18 +80816,6 @@ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" }, - "quill-delta": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", - "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", - "dev": true, - "peer": true, - "requires": { - "fast-diff": "^1.3.0", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0" - } - }, "raf-schd": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", @@ -84359,19 +80918,16 @@ "react-collapse": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-collapse/-/react-collapse-5.1.1.tgz", - "integrity": "sha512-k6cd7csF1o9LBhQ4AGBIdxB60SUEUMQDAnL2z1YvYNr9KoKr+nDkhN6FK7uGaBd/rYrYfrMpzpmJEIeHRYogBw==", - "requires": {} + "integrity": "sha512-k6cd7csF1o9LBhQ4AGBIdxB60SUEUMQDAnL2z1YvYNr9KoKr+nDkhN6FK7uGaBd/rYrYfrMpzpmJEIeHRYogBw==" }, "react-colorful": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", - "dev": true, - "requires": {} + "dev": true }, "react-content-loader": { - "version": "6.2.0", - "requires": {} + "version": "6.2.0" }, "react-devtools-core": { "version": "4.27.8", @@ -84385,8 +80941,7 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" } } }, @@ -84420,8 +80975,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", - "dev": true, - "requires": {} + "dev": true }, "react-dom": { "version": "18.1.0", @@ -84443,15 +80997,13 @@ "react-freeze": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz", - "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==", - "requires": {} + "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==" }, "react-inspector": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", "integrity": "sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==", - "dev": true, - "requires": {} + "dev": true }, "react-is": { "version": "16.13.1", @@ -84638,8 +81190,7 @@ "react-native-android-location-enabler": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/react-native-android-location-enabler/-/react-native-android-location-enabler-1.2.2.tgz", - "integrity": "sha512-CC5ghRoK3jkGNK8jdIiYIc3l0XZuQuMt2KEfldDpnMCkNz2aAfUWyLCoOniFLqtdD9poA3az+kCmUzTvLAyTiA==", - "requires": {} + "integrity": "sha512-CC5ghRoK3jkGNK8jdIiYIc3l0XZuQuMt2KEfldDpnMCkNz2aAfUWyLCoOniFLqtdD9poA3az+kCmUzTvLAyTiA==" }, "react-native-animatable": { "version": "1.3.3", @@ -84682,22 +81233,18 @@ "react-native-collapsible": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/react-native-collapsible/-/react-native-collapsible-1.6.1.tgz", - "integrity": "sha512-orF4BeiXd2hZW7fu9YcqIJXzN6TJcFcddY807D3MAOVktLuW9oQ+RIkrTJ5DR3v9ZOFfREkOjEmS79qeUTvkBQ==", - "requires": {} + "integrity": "sha512-orF4BeiXd2hZW7fu9YcqIJXzN6TJcFcddY807D3MAOVktLuW9oQ+RIkrTJ5DR3v9ZOFfREkOjEmS79qeUTvkBQ==" }, "react-native-config": { - "version": "1.4.6", - "requires": {} + "version": "1.4.6" }, "react-native-dev-menu": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/react-native-dev-menu/-/react-native-dev-menu-4.1.1.tgz", - "integrity": "sha512-jdYjoTpFHvGXW12enaTnrgOoEgVF5JVqv4hcO8K0KV66Cvk8YLwD3XHsEiqMat+4C1osa+IG5Yt3qAiMOLBQxQ==", - "requires": {} + "integrity": "sha512-jdYjoTpFHvGXW12enaTnrgOoEgVF5JVqv4hcO8K0KV66Cvk8YLwD3XHsEiqMat+4C1osa+IG5Yt3qAiMOLBQxQ==" }, "react-native-device-info": { - "version": "10.3.0", - "requires": {} + "version": "10.3.0" }, "react-native-document-picker": { "version": "8.1.1", @@ -84716,14 +81263,12 @@ "react-native-fast-image": { "version": "8.6.3", "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.6.3.tgz", - "integrity": "sha512-Sdw4ESidXCXOmQ9EcYguNY2swyoWmx53kym2zRsvi+VeFCHEdkO+WG1DK+6W81juot40bbfLNhkc63QnWtesNg==", - "requires": {} + "integrity": "sha512-Sdw4ESidXCXOmQ9EcYguNY2swyoWmx53kym2zRsvi+VeFCHEdkO+WG1DK+6W81juot40bbfLNhkc63QnWtesNg==" }, "react-native-flipper": { "version": "https://gitpkg.now.sh/facebook/flipper/react-native/react-native-flipper?9cacc9b59402550eae866e0e81e5f0c2f8203e6b", "integrity": "sha512-M784S/qPuN/HqjdvXg98HIDmfm0sF8mACc56YNg87nzEF90zKSKp0XyOE83SEW+UJX2Gq/rf9BvM2GZeXlrhnQ==", - "dev": true, - "requires": {} + "dev": true }, "react-native-fs": { "version": "2.20.0", @@ -84766,18 +81311,15 @@ "react-native-haptic-feedback": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/react-native-haptic-feedback/-/react-native-haptic-feedback-1.14.0.tgz", - "integrity": "sha512-dSXZ6gAzl+W/L7BPjOpnT0bx0cgQiSr0sB3DjyDJbGIdVr4ISaktZC6gC9xYFTv2kMq0+KtbKi+dpd0WtxYZMw==", - "requires": {} + "integrity": "sha512-dSXZ6gAzl+W/L7BPjOpnT0bx0cgQiSr0sB3DjyDJbGIdVr4ISaktZC6gC9xYFTv2kMq0+KtbKi+dpd0WtxYZMw==" }, "react-native-image-pan-zoom": { "version": "2.1.12", "resolved": "https://registry.npmjs.org/react-native-image-pan-zoom/-/react-native-image-pan-zoom-2.1.12.tgz", - "integrity": "sha512-BF66XeP6dzuANsPmmFsJshM2Jyh/Mo1t8FsGc1L9Q9/sVP8MJULDabB1hms+eAoqgtyhMr5BuXV3E1hJ5U5H6Q==", - "requires": {} + "integrity": "sha512-BF66XeP6dzuANsPmmFsJshM2Jyh/Mo1t8FsGc1L9Q9/sVP8MJULDabB1hms+eAoqgtyhMr5BuXV3E1hJ5U5H6Q==" }, "react-native-image-picker": { - "version": "5.1.0", - "requires": {} + "version": "5.1.0" }, "react-native-image-size": { "version": "git+ssh://git@github.com/Expensify/react-native-image-size.git#8393b7e58df6ff65fd41f60aee8ece8822c91e2b", @@ -84803,14 +81345,12 @@ "react-native-linear-gradient": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.8.1.tgz", - "integrity": "sha512-934R4Bnjo7mYT38W9ypS1Dq/YW6TgyGdkHg+w72HNxN0ZDKG1GqAnZ6XlicMUYJDh7ViiJAKN8eOF3Ho0N4J0Q==", - "requires": {} + "integrity": "sha512-934R4Bnjo7mYT38W9ypS1Dq/YW6TgyGdkHg+w72HNxN0ZDKG1GqAnZ6XlicMUYJDh7ViiJAKN8eOF3Ho0N4J0Q==" }, "react-native-localize": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/react-native-localize/-/react-native-localize-2.2.6.tgz", - "integrity": "sha512-EZETlC1ZlW/4g6xfsNCwAkAw5BDL2A6zk/08JjFR/GRGxYuKRD7iP1hHn1+h6DEu+xROjPpoNeXfMER2vkTVIQ==", - "requires": {} + "integrity": "sha512-EZETlC1ZlW/4g6xfsNCwAkAw5BDL2A6zk/08JjFR/GRGxYuKRD7iP1hHn1+h6DEu+xROjPpoNeXfMER2vkTVIQ==" }, "react-native-modal": { "version": "13.0.1", @@ -84834,8 +81374,7 @@ "react-native-pager-view": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.2.0.tgz", - "integrity": "sha512-pf9OnL/Tkr+5s4Gjmsn7xh91PtJLDa6qxYa/bmtUhd/+s4cQdWQ8DIFoOFghwZIHHHwVdWtoXkp6HtpjN+r20g==", - "requires": {} + "integrity": "sha512-pf9OnL/Tkr+5s4Gjmsn7xh91PtJLDa6qxYa/bmtUhd/+s4cQdWQ8DIFoOFghwZIHHHwVdWtoXkp6HtpjN+r20g==" }, "react-native-pdf": { "version": "6.7.1", @@ -84849,21 +81388,18 @@ "react-native-performance": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-native-performance/-/react-native-performance-5.1.0.tgz", - "integrity": "sha512-rq/YBf0/GptSOM/Lj64/1yRq8uN2YE0psFB16wFbYBbTcIEp/0rrgN2HyS5lhvfBOFgKoDRWQ53jHSCb+QJ5eA==", - "requires": {} + "integrity": "sha512-rq/YBf0/GptSOM/Lj64/1yRq8uN2YE0psFB16wFbYBbTcIEp/0rrgN2HyS5lhvfBOFgKoDRWQ53jHSCb+QJ5eA==" }, "react-native-performance-flipper-reporter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-native-performance-flipper-reporter/-/react-native-performance-flipper-reporter-2.0.0.tgz", "integrity": "sha512-ccOgq99eK3OvrNNhpJDC4ydNk/1JGgWZPo2FLrPDLUHXAR4EcE9cUAtb46oGOpvHk5ZOb5aEDofc/CS9OEGcag==", - "dev": true, - "requires": {} + "dev": true }, "react-native-permissions": { "version": "3.9.3", "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-3.9.3.tgz", - "integrity": "sha512-2UqG2Em4xHxLq0E1XynXMdQ//XZltxVUjTn/i4fPIZuuZ0cQ+ydAQmLXqDPxOXvG0sICwc3oe0orJmQdqpa1sQ==", - "requires": {} + "integrity": "sha512-2UqG2Em4xHxLq0E1XynXMdQ//XZltxVUjTn/i4fPIZuuZ0cQ+ydAQmLXqDPxOXvG0sICwc3oe0orJmQdqpa1sQ==" }, "react-native-picker-select": { "version": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#eae05855286dc699954415cc1d629bfd8e8e47e2", @@ -84874,8 +81410,7 @@ } }, "react-native-plaid-link-sdk": { - "version": "10.0.0", - "requires": {} + "version": "10.0.0" }, "react-native-qrcode-svg": { "version": "6.2.0", @@ -84887,8 +81422,7 @@ } }, "react-native-quick-sqlite": { - "version": "8.0.0-beta.2", - "requires": {} + "version": "8.0.0-beta.2" }, "react-native-reanimated": { "version": "3.5.4", @@ -84949,8 +81483,7 @@ "react-native-safe-area-context": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz", - "integrity": "sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==", - "requires": {} + "integrity": "sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==" }, "react-native-screens": { "version": "3.21.0", @@ -84996,14 +81529,12 @@ } }, "react-native-view-shot": { - "version": "3.6.0", - "requires": {} + "version": "3.6.0" }, "react-native-vision-camera": { "version": "2.16.2", "resolved": "https://registry.npmjs.org/react-native-vision-camera/-/react-native-vision-camera-2.16.2.tgz", - "integrity": "sha512-QIpG33l3QB0AkTfX/ccRknwNRu1APNUkokVKF1lpRO2+tBnkXnGL0UapgXg5u9KIONZtrpupeDeO+J5B2TeQVw==", - "requires": {} + "integrity": "sha512-QIpG33l3QB0AkTfX/ccRknwNRu1APNUkokVKF1lpRO2+tBnkXnGL0UapgXg5u9KIONZtrpupeDeO+J5B2TeQVw==" }, "react-native-web": { "version": "0.19.9", @@ -85030,8 +81561,7 @@ "react-native-web-linear-gradient": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/react-native-web-linear-gradient/-/react-native-web-linear-gradient-1.1.2.tgz", - "integrity": "sha512-SmUnpwT49CEe78pXvIvYf72Es8Pv+ZYKCnEOgb2zAKpEUDMo0+xElfRJhwt5nfI8krJ5WbFPKnoDgD0uUjAN1A==", - "requires": {} + "integrity": "sha512-SmUnpwT49CEe78pXvIvYf72Es8Pv+ZYKCnEOgb2zAKpEUDMo0+xElfRJhwt5nfI8krJ5WbFPKnoDgD0uUjAN1A==" }, "react-native-webview": { "version": "11.23.0", @@ -85124,8 +81654,7 @@ "react-script-hook": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/react-script-hook/-/react-script-hook-1.7.2.tgz", - "integrity": "sha512-fhyCEfXb94fag34UPRF0zry1XGwmVY+79iibWwTqAoOiCzYJQOYTiWJ7CnqglA9tMSV8g45cQpHCMcBwr7dwhA==", - "requires": {} + "integrity": "sha512-fhyCEfXb94fag34UPRF0zry1XGwmVY+79iibWwTqAoOiCzYJQOYTiWJ7CnqglA9tMSV8g45cQpHCMcBwr7dwhA==" }, "react-shallow-renderer": { "version": "16.15.0", @@ -85537,8 +82066,7 @@ "react-webcam": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.1.1.tgz", - "integrity": "sha512-2W5WN8wmEv8ZlxvyAlOxVuw6new8Bi7+KSPqoq5oa7z1KSKZ72ucaKqCFRtHSuFjZ5sh5ioS9lp4BGwnaZ6lDg==", - "requires": {} + "integrity": "sha512-2W5WN8wmEv8ZlxvyAlOxVuw6new8Bi7+KSPqoq5oa7z1KSKZ72ucaKqCFRtHSuFjZ5sh5ioS9lp4BGwnaZ6lDg==" }, "react-window": { "version": "1.8.9", @@ -85830,6 +82358,7 @@ "version": "0.15.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -86017,186 +82546,6 @@ "xtend": "^4.0.1" } }, - "remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "dependencies": { - "bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "optional": true, - "peer": true - }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "optional": true, - "peer": true - }, - "mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "dev": true, - "optional": true, - "peer": true - }, - "unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - } - }, - "unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "dev": true, - "optional": true, - "peer": true - }, - "unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - } - }, - "unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, - "vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, "remark-slug": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz", @@ -86343,6 +82692,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "requires": { "resolve-from": "^5.0.0" } @@ -86372,7 +82722,8 @@ "devOptional": true }, "resolve.exports": { - "version": "2.0.0" + "version": "2.0.0", + "dev": true }, "responselike": { "version": "2.0.1", @@ -86507,17 +82858,6 @@ } } }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "mri": "^1.1.0" - } - }, "safe-array-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", @@ -86602,7 +82942,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "devOptional": true, + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -86613,7 +82953,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -86625,14 +82965,13 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "devOptional": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true + "dev": true } } }, @@ -87735,6 +84074,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -87881,7 +84221,8 @@ "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true }, "strip-eof": { "version": "1.0.0", @@ -87906,7 +84247,8 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "strnum": { "version": "1.0.5", @@ -88314,6 +84656,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -88330,8 +84673,7 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.12.0.tgz", "integrity": "sha512-AiGqfYC1jLmJagbzQGuoZRM48JPsr9yB734a7K6wzr34NMhjUPrWSQrkF7ZBybf3yCerCL2Gcr02kMv4NmaZfA==", - "dev": true, - "requires": {} + "dev": true }, "throat": { "version": "5.0.0", @@ -88598,14 +84940,6 @@ "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", "dev": true }, - "trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "optional": true, - "peer": true - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -88638,8 +84972,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", - "dev": true, - "requires": {} + "dev": true }, "ts-dedent": { "version": "2.2.0", @@ -88995,17 +85328,6 @@ "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", "dev": true }, - "unist-util-position-from-estree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", - "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, "unist-util-remove": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", @@ -89250,14 +85572,12 @@ "use-latest-callback": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.6.tgz", - "integrity": "sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg==", - "requires": {} + "integrity": "sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg==" }, "use-memo-one": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", - "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", - "requires": {} + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==" }, "use-resize-observer": { "version": "9.1.0", @@ -89281,8 +85601,7 @@ "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" }, "utf8": { "version": "3.0.0", @@ -89341,30 +85660,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, - "uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "dependencies": { - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "optional": true, - "peer": true - } - } - }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -89373,6 +85668,7 @@ }, "v8-to-istanbul": { "version": "9.0.1", + "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -89525,7 +85821,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "devOptional": true, + "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -89794,7 +86090,7 @@ "version": "5.88.2", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", - "devOptional": true, + "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -89826,13 +86122,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "devOptional": true + "dev": true }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -89842,32 +86138,31 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "dev": true }, "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "devOptional": true + "dev": true }, "acorn-import-assertions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "devOptional": true, - "requires": {} + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true + "dev": true }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "devOptional": true, + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -89878,13 +86173,13 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "devOptional": true + "dev": true }, "serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "devOptional": true, + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -89893,7 +86188,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -89902,13 +86197,13 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "devOptional": true + "dev": true }, "terser-webpack-plugin": { "version": "5.3.9", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "devOptional": true, + "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -89921,7 +86216,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "devOptional": true + "dev": true } } }, @@ -90011,8 +86306,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -90622,8 +86916,7 @@ "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} + "dev": true }, "x-default-browser": { "version": "0.4.0", From 572cad30afe58b8908366078013fd07b73c5a154 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 14:08:31 -0500 Subject: [PATCH 002/130] feat(Violations): Add transactionViolation onxy connection to MoneyRequestView --- src/components/ReportActionItem/MoneyRequestView.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 1da061fc741e..8b5560299080 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -327,6 +327,13 @@ export default compose( return `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`; }, }, + transactionViolation: { + key: ({report}) => { + const parentReportAction = ReportActionsUtils.getParentReportAction(report); + const transactionID = lodashGet(parentReportAction, ['originalMessage', 'IOUTransactionID'], 0); + return `${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`; + }, + }, policyTags: { key: ({report}) => `${ONYXKEYS.COLLECTION.POLICY_TAGS}${report.policyID}`, }, From 6a853a032ea7d9e339a5fceb679651ef24dd1ae6 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 14:50:43 -0500 Subject: [PATCH 003/130] feat(Violations): Add transactionViolations propTypes. --- src/types/onyx/TransactionViolation.ts | 57 ++++++++++++++++++-------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index eb0e67cc1e14..ba6f29e1ca47 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -2,25 +2,36 @@ * @module TransactionViolation * @description Transaction Violation */ +import PropTypes from 'prop-types'; /** - * Names of the various Transaction Violation types + * Names of the various Transaction Violation types. + * Defined as an array so it can be used in `PropTypes.oneOf` */ -type ViolationName = - | 'perDayLimit' - | 'maxAge' - | 'overLimit' - | 'overLimitAttendee' - | 'overCategoryLimit' - | 'receiptRequired' - | 'missingCategory' - | 'categoryOutOfPolicy' - | 'missingTag' - | 'tagOutOfPolicy' - | 'missingComment' - | 'taxRequired' - | 'taxOutOfPolicy' - | 'billableExpense'; +const violationNames = [ + 'perDayLimit', + 'maxAge', + 'overLimit', + 'overLimitAttendee', + 'overCategoryLimit', + 'receiptRequired', + 'missingCategory', + 'categoryOutOfPolicy', + 'missingTag', + 'tagOutOfPolicy', + 'missingComment', + 'taxRequired', + 'taxOutOfPolicy', + 'billableExpense', +] as const; + +/** + * Names of the various Transaction Violation types. + * + * The list is first defined as an array so it can be used in `PropTypes.oneOf`, and + * converted to a union type here for use in typescript. + */ +type ViolationName = (typeof violationNames)[number]; type ViolationType = string; @@ -31,4 +42,18 @@ type TransactionViolation = { data?: Record; }; +const transactionViolationPropType = PropTypes.shape({ + type: PropTypes.string.isRequired, + name: PropTypes.oneOf(violationNames).isRequired, + userMessage: PropTypes.string.isRequired, + data: PropTypes.objectOf(PropTypes.string), +}); + +const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); + +export default { + transactionViolationPropType, + transactionViolationsPropTypes, +}; + export type {TransactionViolation, ViolationName, ViolationType}; From f090c0ab0c826bcc3551f84e13b4131c3b1431e2 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 14:51:33 -0500 Subject: [PATCH 004/130] feat(Violations): Add violations to fields on MoneyRequestView --- .../ReportActionItem/MoneyRequestView.js | 66 ++++++++++++++++--- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 8b5560299080..f0cfe39edfa8 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -28,6 +28,7 @@ import * as ReceiptUtils from '@libs/ReceiptUtils'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; +import ViolationUtils from '@libs/Violations/ViolationsUtils'; import AnimatedEmptyStateBackground from '@pages/home/report/AnimatedEmptyStateBackground'; import iouReportPropTypes from '@pages/iouReportPropTypes'; import reportPropTypes from '@pages/reportPropTypes'; @@ -38,6 +39,7 @@ import * as IOU from '@userActions/IOU'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import {transactionViolationsPropTypes} from '@src/types/onyx/TransactionViolation'; import ReportActionItemImage from './ReportActionItemImage'; const propTypes = { @@ -57,6 +59,9 @@ const propTypes = { /** The transaction associated with the transactionThread */ transaction: transactionPropTypes, + /** Violations detected in this transaction */ + transactionViolation: transactionViolationsPropTypes, + /** Collection of tags attached to a policy */ policyTags: tagPropTypes, @@ -71,10 +76,11 @@ const defaultProps = { currency: CONST.CURRENCY.USD, comment: {comment: ''}, }, + transactionViolation: undefined, policyTags: {}, }; -function MoneyRequestView({report, parentReport, policyCategories, shouldShowHorizontalRule, transaction, policyTags, policy}) { +function MoneyRequestView({report, parentReport, policyCategories, shouldShowHorizontalRule, transaction, policyTags, policy, transactionViolation}) { const theme = useTheme(); const styles = useThemeStyles(); const {isSmallScreenWidth} = useWindowDimensions(); @@ -175,6 +181,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor enablePreviewModal /> + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'receipt', translate)) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'receipt', translate)} + + )} )} {!hasReceipt && canEdit && !isSettled && canUseViolations && ( @@ -196,6 +207,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} /> + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'amount', translate)) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'amount', translate)} + + )} + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'comment', translate)) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'comment', translate)} + + )} {isDistanceRequest ? ( @@ -233,6 +254,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && isEmptyMerchant ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'merchant', translate)) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'merchant', translate)} + + )} )} @@ -246,6 +272,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionDate === '' ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'date')) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'date', translate)} + + )} {shouldShowCategory && ( @@ -257,6 +288,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} /> + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'category', translate)) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'category', translate)} + + )} )} {shouldShowTag && ( @@ -269,6 +305,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} /> + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'tag')) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'tag', translate)} + + )} )} {isExpensifyCardTransaction && ( @@ -283,14 +324,21 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor )} {shouldShowBillable && ( - - {translate('common.billable')} - IOU.editMoneyRequest(transaction.transactionID, report.reportID, {billable: value})} - /> - + <> + + {translate('common.billable')} + IOU.editMoneyRequest(transaction.transactionID, report.reportID, {billable: value})} + /> + + {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'billable', translate)) && ( + + {ViolationUtils.getViolationForField(transactionViolation, 'billable', translate)} + + )} + )} Date: Mon, 20 Nov 2023 15:33:41 -0500 Subject: [PATCH 005/130] fix(Violations): Update ViolationUtils.getViolationsForField to return string instead of array. --- .../ReportActionItem/MoneyRequestView.js | 45 ++++++++++--------- src/libs/Violations/ViolationsUtils.ts | 5 ++- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index f0cfe39edfa8..71a21da00bdc 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -1,7 +1,7 @@ import lodashGet from 'lodash/get'; import lodashValues from 'lodash/values'; import PropTypes from 'prop-types'; -import React, {useMemo} from 'react'; +import React, {useCallback, useMemo} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import categoryPropTypes from '@components/categoryPropTypes'; @@ -60,7 +60,7 @@ const propTypes = { transaction: transactionPropTypes, /** Violations detected in this transaction */ - transactionViolation: transactionViolationsPropTypes, + transactionViolations: transactionViolationsPropTypes, /** Collection of tags attached to a policy */ policyTags: tagPropTypes, @@ -76,11 +76,11 @@ const defaultProps = { currency: CONST.CURRENCY.USD, comment: {comment: ''}, }, - transactionViolation: undefined, + transactionViolations: [], policyTags: {}, }; -function MoneyRequestView({report, parentReport, policyCategories, shouldShowHorizontalRule, transaction, policyTags, policy, transactionViolation}) { +function MoneyRequestView({report, parentReport, policyCategories, shouldShowHorizontalRule, transaction, policyTags, policy, transactionViolations}) { const theme = useTheme(); const styles = useThemeStyles(); const {isSmallScreenWidth} = useWindowDimensions(); @@ -129,6 +129,11 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowTag = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagsList))); const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); + /** + * Returns the translated violation message for a given field, if one exists, `undefined` if not. + */ + const getViolationForField = useCallback((field) => ViolationUtils.getViolationForField(transactionViolations, field, translate), [transactionViolations, translate]); + let amountDescription = `${translate('iou.amount')}`; if (isExpensifyCardTransaction) { @@ -181,9 +186,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor enablePreviewModal /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'receipt', translate)) && ( + {Boolean(getViolationForField('receipt')) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'receipt', translate)} + {getViolationForField('receipt')} )} @@ -207,9 +212,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'amount', translate)) && ( + {Boolean(getViolationForField('amount')) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'amount', translate)} + {getViolationForField('amount')} )} @@ -225,9 +230,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]} numberOfLinesTitle={0} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'comment', translate)) && ( + {Boolean(getViolationForField('comment', translate)) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'comment', translate)} + {getViolationForField('comment')} )} @@ -254,9 +259,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && isEmptyMerchant ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'merchant', translate)) && ( + {Boolean(getViolationForField('merchant')) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'merchant', translate)} + {getViolationForField('merchant')} )} @@ -272,9 +277,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionDate === '' ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'date')) && ( + {Boolean(getViolationForField('date')) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'date', translate)} + {getViolationForField('date')} )} @@ -288,9 +293,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'category', translate)) && ( + {Boolean(getViolationForField('category')) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'category', translate)} + {getViolationForField('category')} )} @@ -305,9 +310,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'tag')) && ( + {Boolean(getViolationForField('tag')) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'tag', translate)} + {getViolationForField('tag')} )} @@ -333,9 +338,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onToggle={(value) => IOU.editMoneyRequest(transaction.transactionID, report.reportID, {billable: value})} /> - {Boolean(ViolationUtils.getViolationForField(transactionViolation, 'billable', translate)) && ( + {Boolean(getViolationForField('billable', translate)) && ( - {ViolationUtils.getViolationForField(transactionViolation, 'billable', translate)} + {getViolationForField('billable')} )} diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 28f5aedf10b9..0caac1deb52b 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -5,8 +5,9 @@ import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@ import possibleViolationsByField, {ViolationField} from './possibleViolationsByField'; const ViolationsUtils = { - getViolationForField(transactionViolations: TransactionViolation[], field: ViolationField, translate: (key: string) => string): string[] { - return transactionViolations.filter((violation) => possibleViolationsByField[field]?.includes(violation.name)).map((violation) => translate(violation.name)); + getViolationForField(transactionViolations: TransactionViolation[], field: ViolationField, translate: (key: string) => string): string { + const fieldViolations = transactionViolations.filter((violation) => possibleViolationsByField[field]?.includes(violation.name)).map((violation) => translate(violation.name)); + return fieldViolations[0]; }, getViolationsOnyxData( From 4f6863c61c2f100247aef59ace0e75b18733e111 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 15:41:15 -0500 Subject: [PATCH 006/130] feat(Violations): Check `canUseViolations` in getViolationsForField --- .../ReportActionItem/MoneyRequestView.js | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 71a21da00bdc..ff1d3e200719 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -132,7 +132,15 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor /** * Returns the translated violation message for a given field, if one exists, `undefined` if not. */ - const getViolationForField = useCallback((field) => ViolationUtils.getViolationForField(transactionViolations, field, translate), [transactionViolations, translate]); + const getViolationForField = useCallback( + (field) => { + if (!canUseViolations) { + return undefined; + } + return ViolationUtils.getViolationForField(transactionViolations, field, translate); + }, + [canUseViolations, transactionViolations, translate], + ); let amountDescription = `${translate('iou.amount')}`; @@ -186,7 +194,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor enablePreviewModal /> - {Boolean(getViolationForField('receipt')) && ( + {getViolationForField('receipt') && ( {getViolationForField('receipt')} @@ -212,7 +220,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} /> - {Boolean(getViolationForField('amount')) && ( + {getViolationForField('amount') && ( {getViolationForField('amount')} @@ -230,7 +238,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]} numberOfLinesTitle={0} /> - {Boolean(getViolationForField('comment', translate)) && ( + {getViolationForField('comment') && ( {getViolationForField('comment')} @@ -259,7 +267,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && isEmptyMerchant ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> - {Boolean(getViolationForField('merchant')) && ( + {getViolationForField('merchant') && ( {getViolationForField('merchant')} @@ -277,7 +285,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionDate === '' ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> - {Boolean(getViolationForField('date')) && ( + {getViolationForField('date') && ( {getViolationForField('date')} @@ -293,7 +301,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} /> - {Boolean(getViolationForField('category')) && ( + {getViolationForField('category') && ( {getViolationForField('category')} @@ -310,7 +318,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} /> - {Boolean(getViolationForField('tag')) && ( + {getViolationForField('tag') && ( {getViolationForField('tag')} @@ -338,7 +346,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onToggle={(value) => IOU.editMoneyRequest(transaction.transactionID, report.reportID, {billable: value})} /> - {Boolean(getViolationForField('billable', translate)) && ( + {getViolationForField('billable') && ( {getViolationForField('billable')} From baf551a1254b92e92dd88e27425f5a2a31a815b1 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 15:51:31 -0500 Subject: [PATCH 007/130] feat(Violations): rename getViolationForField to getTranslatedViolationNameForField for clarity --- src/components/ReportActionItem/MoneyRequestView.js | 6 ++++-- src/libs/Violations/ViolationsUtils.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index ff1d3e200719..b4bd09b94d38 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -130,14 +130,16 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); /** - * Returns the translated violation message for a given field, if one exists, `undefined` if not. + * Returns the translated violation name for the provided field. + * + * Returns `undefined`If the user is not permitted to use violations or no violation exists on that field. */ const getViolationForField = useCallback( (field) => { if (!canUseViolations) { return undefined; } - return ViolationUtils.getViolationForField(transactionViolations, field, translate); + return ViolationUtils.getTranslatedViolationNameForField(field, transactionViolations, translate); }, [canUseViolations, transactionViolations, translate], ); diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 0caac1deb52b..12461c434460 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -5,7 +5,7 @@ import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@ import possibleViolationsByField, {ViolationField} from './possibleViolationsByField'; const ViolationsUtils = { - getViolationForField(transactionViolations: TransactionViolation[], field: ViolationField, translate: (key: string) => string): string { + getTranslatedViolationNameForField(field: ViolationField, transactionViolations: TransactionViolation[], translate: (key: string) => string): string { const fieldViolations = transactionViolations.filter((violation) => possibleViolationsByField[field]?.includes(violation.name)).map((violation) => translate(violation.name)); return fieldViolations[0]; }, From 32c0a6d94679f6635808aa6ac02d3b7c90cf6514 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 16:14:31 -0500 Subject: [PATCH 008/130] feat(Violations): add brick road indicators to fields with navigation --- src/components/ReportActionItem/MoneyRequestView.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index b4bd09b94d38..76088b40fb0e 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -238,6 +238,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.DESCRIPTION))} wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]} + brickRoadIndicator={Boolean(getViolationForField('amount'))} numberOfLinesTitle={0} /> {getViolationForField('comment') && ( @@ -266,7 +267,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.MERCHANT))} - brickRoadIndicator={hasErrors && isEmptyMerchant ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={Boolean(getViolationForField('merchant')) || (hasErrors && isEmptyMerchant) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> {getViolationForField('merchant') && ( @@ -284,7 +285,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit && !isSettled} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.DATE))} - brickRoadIndicator={hasErrors && transactionDate === '' ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={Boolean(getViolationForField('date')) || (hasErrors && transactionDate === '') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> {getViolationForField('date') && ( @@ -302,6 +303,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} + brickRoadIndicator={Boolean(getViolationForField('category'))} /> {getViolationForField('category') && ( @@ -319,6 +321,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} + brickRoadIndicator={Boolean(getViolationForField('tag'))} /> {getViolationForField('tag') && ( From b57f82b730217301a6098d230c69a892a957a279 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 17:05:52 -0500 Subject: [PATCH 009/130] feat(Violations): fix default propType for transactionViolations --- src/components/ReportActionItem/MoneyRequestView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 76088b40fb0e..37a985286777 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -76,7 +76,7 @@ const defaultProps = { currency: CONST.CURRENCY.USD, comment: {comment: ''}, }, - transactionViolations: [], + transactionViolations: null, policyTags: {}, }; From 9ca94f1c9fe00b034d72604fb843ca060370eb78 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 20 Nov 2023 17:06:20 -0500 Subject: [PATCH 010/130] feat(Violations): fix RBR indicators showing wrong color on Violations --- src/components/ReportActionItem/MoneyRequestView.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 37a985286777..ccf2ebae1de8 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -238,7 +238,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.DESCRIPTION))} wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]} - brickRoadIndicator={Boolean(getViolationForField('amount'))} + brickRoadIndicator={getViolationForField('amount') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} numberOfLinesTitle={0} /> {getViolationForField('comment') && ( @@ -303,7 +303,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} - brickRoadIndicator={Boolean(getViolationForField('category'))} + brickRoadIndicator={getViolationForField('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> {getViolationForField('category') && ( @@ -321,7 +321,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} - brickRoadIndicator={Boolean(getViolationForField('tag'))} + brickRoadIndicator={getViolationForField('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> {getViolationForField('tag') && ( From 41ef4a9786a24594d2286ce03c45963b38c67329 Mon Sep 17 00:00:00 2001 From: DylanDylann Date: Thu, 23 Nov 2023 17:55:09 +0700 Subject: [PATCH 011/130] fix unable to change currency when offline --- src/components/MoneyRequestConfirmationList.js | 2 +- src/components/ReportActionItem/MoneyRequestView.js | 5 +++-- src/libs/ReportUtils.js | 11 ++++++++++- src/pages/EditRequestPage.js | 7 ++++++- src/pages/iou/steps/NewRequestAmountPage.js | 2 +- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.js b/src/components/MoneyRequestConfirmationList.js index efa9c5a49cec..99afcd71826c 100755 --- a/src/components/MoneyRequestConfirmationList.js +++ b/src/components/MoneyRequestConfirmationList.js @@ -598,7 +598,7 @@ function MoneyRequestConfirmationList(props) { shouldShowRightIcon={!props.isReadOnly && !props.isDistanceRequest} title={formattedAmount} description={translate('iou.amount')} - interactive={!props.isReadOnly} + interactive={!props.isReadOnly && !props.isDistanceRequest} onPress={() => { if (props.isDistanceRequest) { return; diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 33ad99f32326..5541ab0f8c76 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -159,6 +159,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const pendingAction = lodashGet(transaction, 'pendingAction'); const getPendingFieldAction = (fieldPath) => lodashGet(transaction, fieldPath) || pendingAction; + const isAdmin = ReportUtils.isAdminOfMoneyRequestReport(moneyRequestReport); return ( @@ -190,8 +191,8 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor titleIcon={Expensicons.Checkmark} description={amountDescription} titleStyle={styles.newKansasLarge} - interactive={canEdit && !isSettled} - shouldShowRightIcon={canEdit && !isSettled} + interactive={canEdit && !isSettled && (isDistanceRequest ? isAdmin : true)} + shouldShowRightIcon={canEdit && !isSettled && (isDistanceRequest ? isAdmin : true)} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.AMOUNT))} brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 2e91a93af7e1..b6ba729955f4 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1660,6 +1660,14 @@ function getTransactionDetails(transaction, createdDateFormat = CONST.DATE.FNS_F }; } +/** + * @param {Object} moneyRequestReport + * @returns {Boolean} + */ +function isAdminOfMoneyRequestReport(moneyRequestReport) { + return isExpenseReport(moneyRequestReport) && lodashGet(getPolicy(moneyRequestReport.policyID), 'role', '') === CONST.POLICY.ROLE.ADMIN; +} + /** * Can only edit if: * @@ -1693,7 +1701,7 @@ function canEditMoneyRequest(reportAction, fieldToEdit = '') { const moneyRequestReport = getReport(moneyRequestReportID); const isReportSettled = isSettled(moneyRequestReport.reportID); - const isAdmin = isExpenseReport(moneyRequestReport) && lodashGet(getPolicy(moneyRequestReport.policyID), 'role', '') === CONST.POLICY.ROLE.ADMIN; + const isAdmin = isAdminOfMoneyRequestReport(moneyRequestReport); const isRequestor = currentUserAccountID === reportAction.actorAccountID; if (isAdmin && !isRequestor && fieldToEdit === CONST.EDIT_REQUEST_FIELD.RECEIPT) { return false; @@ -4533,4 +4541,5 @@ export { getRoom, shouldDisableWelcomeMessage, canEditWriteCapability, + isAdminOfMoneyRequestReport, }; diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index 95313bea142d..aae66256dacc 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -104,18 +104,23 @@ function EditRequestPage({report, route, parentReport, policyCategories, policyT // A flag for showing the tags page const shouldShowTags = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagList))); + const isAdmin = ReportUtils.isAdminOfMoneyRequestReport(report); + // Decides whether to allow or disallow editing a money request useEffect(() => { // Do not dismiss the modal, when a current user can edit this property of the money request. if (ReportUtils.canEditFieldOfMoneyRequest(parentReportAction, parentReport.reportID, fieldToEdit)) { return; } + if (TransactionUtils.isDistanceRequest(transaction) ? isAdmin : true) { + return; + } // Dismiss the modal when a current user cannot edit a money request. Navigation.isNavigationReady().then(() => { Navigation.dismissModal(); }); - }, [parentReportAction, parentReport.reportID, fieldToEdit]); + }, [parentReportAction, parentReport.reportID, fieldToEdit, isAdmin, transaction]); // Update the transaction object and close the modal function editMoneyRequest(transactionChanges) { diff --git a/src/pages/iou/steps/NewRequestAmountPage.js b/src/pages/iou/steps/NewRequestAmountPage.js index 1140bbbcf5b2..5325c8e2a7e9 100644 --- a/src/pages/iou/steps/NewRequestAmountPage.js +++ b/src/pages/iou/steps/NewRequestAmountPage.js @@ -166,7 +166,7 @@ function NewRequestAmountPage({route, iou, report, selectedTab}) { testID={NewRequestAmountPage.displayName} > {({safeAreaPaddingBottomStyle}) => ( - + Date: Mon, 27 Nov 2023 16:52:29 -0500 Subject: [PATCH 012/130] fix(Violations): fix type exports in onyx types --- src/types/onyx/PolicyCategory.ts | 4 ++-- src/types/onyx/PolicyTag.ts | 3 +-- src/types/onyx/TransactionViolation.ts | 5 +---- src/types/onyx/index.ts | 4 ++-- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/types/onyx/PolicyCategory.ts b/src/types/onyx/PolicyCategory.ts index b6dfb7bbab9a..03d5877bc5b5 100644 --- a/src/types/onyx/PolicyCategory.ts +++ b/src/types/onyx/PolicyCategory.ts @@ -20,5 +20,5 @@ type PolicyCategory = { }; type PolicyCategories = Record; -export default PolicyCategory; -export type {PolicyCategories}; + +export type {PolicyCategory, PolicyCategories}; diff --git a/src/types/onyx/PolicyTag.ts b/src/types/onyx/PolicyTag.ts index 7807dcc00433..58a21dcf4df5 100644 --- a/src/types/onyx/PolicyTag.ts +++ b/src/types/onyx/PolicyTag.ts @@ -12,5 +12,4 @@ type PolicyTag = { type PolicyTags = Record; -export default PolicyTag; -export type {PolicyTags}; +export type {PolicyTag, PolicyTags}; diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index ba6f29e1ca47..c7aeec81242c 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -51,9 +51,6 @@ const transactionViolationPropType = PropTypes.shape({ const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); -export default { - transactionViolationPropType, - transactionViolationsPropTypes, -}; +export {transactionViolationPropType, transactionViolationsPropTypes}; export type {TransactionViolation, ViolationName, ViolationType}; diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index adeba62b08c6..61f0dde752de 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -21,9 +21,9 @@ import PersonalBankAccount from './PersonalBankAccount'; import PersonalDetails from './PersonalDetails'; import PlaidData from './PlaidData'; import Policy from './Policy'; -import PolicyCategory, {PolicyCategories} from './PolicyCategory'; +import {PolicyCategories, PolicyCategory} from './PolicyCategory'; import PolicyMember, {PolicyMembers} from './PolicyMember'; -import PolicyTag, {PolicyTags} from './PolicyTag'; +import {PolicyTag, PolicyTags} from './PolicyTag'; import PrivatePersonalDetails from './PrivatePersonalDetails'; import RecentlyUsedCategories from './RecentlyUsedCategories'; import RecentlyUsedTags from './RecentlyUsedTags'; From 29faf0f5fbcafa626e590543acea135f833698e8 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 27 Nov 2023 16:54:38 -0500 Subject: [PATCH 013/130] fix(Violations): replace `ViolationUtils.getViolationsForField` with `useViolations()` --- .../ReportActionItem/MoneyRequestView.js | 104 ++++++++---------- src/libs/Violations/ViolationsUtils.ts | 6 - src/libs/Violations/index.ts | 3 +- .../Violations/possibleViolationsByField.ts | 41 ------- src/libs/Violations/useViolations.ts | 69 ++++++++++++ 5 files changed, 115 insertions(+), 108 deletions(-) delete mode 100644 src/libs/Violations/possibleViolationsByField.ts create mode 100644 src/libs/Violations/useViolations.ts diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index ccf2ebae1de8..5cb12c1645b8 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -1,4 +1,5 @@ import lodashGet from 'lodash/get'; +import lodashMap from 'lodash/map'; import lodashValues from 'lodash/values'; import PropTypes from 'prop-types'; import React, {useCallback, useMemo} from 'react'; @@ -28,7 +29,7 @@ import * as ReceiptUtils from '@libs/ReceiptUtils'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; -import ViolationUtils from '@libs/Violations/ViolationsUtils'; +import {useViolations} from '@libs/Violations'; import AnimatedEmptyStateBackground from '@pages/home/report/AnimatedEmptyStateBackground'; import iouReportPropTypes from '@pages/iouReportPropTypes'; import reportPropTypes from '@pages/reportPropTypes'; @@ -129,20 +130,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowTag = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagsList))); const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); - /** - * Returns the translated violation name for the provided field. - * - * Returns `undefined`If the user is not permitted to use violations or no violation exists on that field. - */ - const getViolationForField = useCallback( - (field) => { - if (!canUseViolations) { - return undefined; - } - return ViolationUtils.getTranslatedViolationNameForField(field, transactionViolations, translate); - }, - [canUseViolations, transactionViolations, translate], - ); + const {hasViolations, getViolationsForField} = useViolations(transactionViolations); let amountDescription = `${translate('iou.amount')}`; @@ -164,6 +152,34 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor } } + /** + * Returns am array of components, one for each violation message + * @example + * [ + * {"The amount exceeds the per-day limit"} + * , + * //... + * ] + * @type {function({field: string}): React.Node[]} + */ + const ViolationMessages = useCallback( + ({field}) => + lodashMap( + getViolationsForField(field), + /** + * Renders the formatted message for a violation + * @param {string} violationMessage The text of the violation message + * @returns {React.JSX.Element} A react component for each violation message + */ + (violationMessage) => ( + + {violationMessage} + + ), + ), + [getViolationsForField, styles.ph5, styles.textLabelError], + ); + // A temporary solution to hide the transaction detail // This will be removed after we properly add the transaction as a prop if (ReportActionsUtils.isDeletedAction(parentReportAction)) { @@ -196,11 +212,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor enablePreviewModal /> - {getViolationForField('receipt') && ( - - {getViolationForField('receipt')} - - )} + )} {!hasReceipt && canEdit && !isSettled && canUseViolations && ( @@ -222,11 +234,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} /> - {getViolationForField('amount') && ( - - {getViolationForField('amount')} - - )} + Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.DESCRIPTION))} wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]} - brickRoadIndicator={getViolationForField('amount') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={hasViolations('comment') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} numberOfLinesTitle={0} /> - {getViolationForField('comment') && ( - - {getViolationForField('comment')} - - )} + {isDistanceRequest ? ( @@ -267,14 +271,10 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.MERCHANT))} - brickRoadIndicator={Boolean(getViolationForField('merchant')) || (hasErrors && isEmptyMerchant) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={hasViolations('merchant') || (hasErrors && isEmptyMerchant) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> - {getViolationForField('merchant') && ( - - {getViolationForField('merchant')} - - )} + )} @@ -285,14 +285,10 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit && !isSettled} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.DATE))} - brickRoadIndicator={Boolean(getViolationForField('date')) || (hasErrors && transactionDate === '') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={hasViolations('date') || (hasErrors && transactionDate === '') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> - {getViolationForField('date') && ( - - {getViolationForField('date')} - - )} + {shouldShowCategory && ( @@ -303,13 +299,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} - brickRoadIndicator={getViolationForField('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={hasViolations('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - {getViolationForField('category') && ( - - {getViolationForField('category')} - - )} + )} {shouldShowTag && ( @@ -321,13 +313,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor shouldShowRightIcon={canEdit} titleStyle={styles.flex1} onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} - brickRoadIndicator={getViolationForField('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={hasViolations('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - {getViolationForField('tag') && ( - - {getViolationForField('tag')} - - )} + )} {isExpensifyCardTransaction && ( @@ -351,11 +339,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onToggle={(value) => IOU.editMoneyRequest(transaction.transactionID, report.reportID, {billable: value})} /> - {getViolationForField('billable') && ( - - {getViolationForField('billable')} - - )} + )} diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 12461c434460..192d75ec36ea 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -2,14 +2,8 @@ import reject from 'lodash/reject'; import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; -import possibleViolationsByField, {ViolationField} from './possibleViolationsByField'; const ViolationsUtils = { - getTranslatedViolationNameForField(field: ViolationField, transactionViolations: TransactionViolation[], translate: (key: string) => string): string { - const fieldViolations = transactionViolations.filter((violation) => possibleViolationsByField[field]?.includes(violation.name)).map((violation) => translate(violation.name)); - return fieldViolations[0]; - }, - getViolationsOnyxData( /** The transaction to check for policy violations. */ transaction: Transaction, diff --git a/src/libs/Violations/index.ts b/src/libs/Violations/index.ts index 3ee08a4000d0..07bd9d523a97 100644 --- a/src/libs/Violations/index.ts +++ b/src/libs/Violations/index.ts @@ -1,3 +1,4 @@ +import * as useViolations from './useViolations'; import * as ViolationsUtils from './ViolationsUtils'; -export default ViolationsUtils; +export {useViolations, ViolationsUtils}; diff --git a/src/libs/Violations/possibleViolationsByField.ts b/src/libs/Violations/possibleViolationsByField.ts deleted file mode 100644 index 4dfc1c22b054..000000000000 --- a/src/libs/Violations/possibleViolationsByField.ts +++ /dev/null @@ -1,41 +0,0 @@ -import invertBy from 'lodash/invertBy'; -import {ViolationName} from '@src/types/onyx'; - -/** - * Map from Violation Names to the field where that violation can occur - */ -const violationFields: Record = { - perDayLimit: 'amount', - maxAge: 'date', - overLimit: 'amount', - overLimitAttendee: 'amount', - overCategoryLimit: 'amount', - receiptRequired: 'receipt', - missingCategory: 'category', - categoryOutOfPolicy: 'category', - missingTag: 'tag', - tagOutOfPolicy: 'tag', - missingComment: 'comment', - taxRequired: 'tax', - taxOutOfPolicy: 'tax', - billableExpense: 'billable', -}; - -/** - * Names of Fields where violations can occur - */ -type ViolationField = 'merchant' | 'amount' | 'category' | 'date' | 'tag' | 'comment' | 'billable' | 'receipt' | 'tax'; - -/** - * Map from field name to array of violation types that can occur on that field. - * @example - * { - * // ... - * category: ['missingCategory', 'categoryOutOfPolicy'] - * // ... - * } - */ -const possibleViolationsByField = invertBy(violationFields, (value) => value) as Record; - -export default possibleViolationsByField; -export type {ViolationField}; diff --git a/src/libs/Violations/useViolations.ts b/src/libs/Violations/useViolations.ts new file mode 100644 index 000000000000..aa7833b5edc0 --- /dev/null +++ b/src/libs/Violations/useViolations.ts @@ -0,0 +1,69 @@ +import {useCallback, useMemo} from 'react'; +import useLocalize from '@hooks/useLocalize'; +import {TransactionViolation, ViolationName} from '@src/types/onyx'; + +/** + * Map from Violation Names to the field where that violation can occur + */ +const violationFields: Record = { + perDayLimit: 'amount', + maxAge: 'date', + overLimit: 'amount', + overLimitAttendee: 'amount', + overCategoryLimit: 'amount', + receiptRequired: 'receipt', + missingCategory: 'category', + categoryOutOfPolicy: 'category', + missingTag: 'tag', + tagOutOfPolicy: 'tag', + missingComment: 'comment', + taxRequired: 'tax', + taxOutOfPolicy: 'tax', + billableExpense: 'billable', +}; + +/** + * Names of Fields where violations can occur + */ +type ViolationField = 'merchant' | 'amount' | 'category' | 'date' | 'tag' | 'comment' | 'billable' | 'receipt' | 'tax'; + +type ViolationsMap = Map; + +export default function useViolations(violations: TransactionViolation[]) { + const {translate} = useLocalize(); + + // First we group violations by field and memoize the result + const violationsByField = useMemo((): ViolationsMap => { + const violationGroups = new Map(); + + for (const violation of violations) { + const field = violationFields[violation.name]; + const existingViolations = violationGroups.get(field) ?? []; + existingViolations.push(violation); + violationGroups.set(field, existingViolations); + } + + return violationGroups; + }, [violations]); + + const hasViolations = useCallback( + (field: ViolationField) => { + const fieldViolations: TransactionViolation[] = violationsByField.get(field) ?? []; + return Boolean(fieldViolations.length > 0); + }, + [violationsByField], + ); + + const getViolationsForField = useCallback( + (field: ViolationField) => { + const fieldViolations: TransactionViolation[] = violationsByField.get(field) ?? []; + return fieldViolations.map((violation) => translate(`violations.${violation.name}`)); + }, + [translate, violationsByField], + ); + + return { + hasViolations, + getViolationsForField, + }; +} From 65dc2b4835eef5ae748320e3fcb3b811c9572f25 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 27 Nov 2023 16:55:03 -0500 Subject: [PATCH 014/130] feat(Violations): add dummy keys to translation file for violation names --- src/languages/en.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/languages/en.ts b/src/languages/en.ts index fe867efc27c0..caf1089138b6 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1908,4 +1908,20 @@ export default { guaranteed: 'Guaranteed eReceipt', transactionDate: 'Transaction date', }, + violations: { + billableExpense: 'DUMMY -- VIOLATIONS.BILLABLEEXPENSE', + categoryOutOfPolicy: 'DUMMY -- VIOLATIONS.CATEGORYOUTOFPOLICY', + maxAge: 'DUMMY -- VIOLATIONS.MAXAGE', + missingCategory: 'DUMMY -- VIOLATIONS.MISSINGCATEGORY', + missingComment: 'DUMMY -- VIOLATIONS.MISSINGCOMMENT', + missingTag: 'DUMMY -- VIOLATIONS.MISSINGTAG', + overCategoryLimit: 'DUMMY -- VIOLATIONS.OVERCATEGORYLIMIT', + overLimit: 'DUMMY -- VIOLATIONS.OVERLIMIT', + overLimitAttendee: 'DUMMY -- VIOLATIONS.OVERLIMITATTENDEE', + perDayLimit: 'DUMMY -- VIOLATIONS.PERDAYLIMIT', + receiptRequired: 'DUMMY -- VIOLATIONS.RECEIPTREQUIRED', + tagOutOfPolicy: 'DUMMY -- VIOLATIONS.TAGOUTOFPOLICY', + taxOutOfPolicy: 'DUMMY -- VIOLATIONS.TAXOUTOFPOLICY', + taxRequired: 'DUMMY -- VIOLATIONS.TAXREQUIRED', + }, } satisfies TranslationBase; From e973ceb62a04c0ebdf96181c468611e76f6cc6e2 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 27 Nov 2023 17:06:08 -0500 Subject: [PATCH 015/130] feat(Violations): use spread operator to ensure changes to the array will trigger a re-render --- src/libs/Violations/useViolations.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libs/Violations/useViolations.ts b/src/libs/Violations/useViolations.ts index aa7833b5edc0..698c77871230 100644 --- a/src/libs/Violations/useViolations.ts +++ b/src/libs/Violations/useViolations.ts @@ -32,15 +32,13 @@ type ViolationsMap = Map; export default function useViolations(violations: TransactionViolation[]) { const {translate} = useLocalize(); - // First we group violations by field and memoize the result const violationsByField = useMemo((): ViolationsMap => { const violationGroups = new Map(); for (const violation of violations) { const field = violationFields[violation.name]; const existingViolations = violationGroups.get(field) ?? []; - existingViolations.push(violation); - violationGroups.set(field, existingViolations); + violationGroups.set(field, [...existingViolations, violation]); } return violationGroups; From f5dd125a1eb476dde3dcd7b0ad31b3cebd2ba96d Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 28 Nov 2023 12:36:41 -0500 Subject: [PATCH 016/130] feat(Violations): remove boilerplate --- src/types/onyx/TransactionViolation.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index c7aeec81242c..6f31cc7c88ab 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,7 +1,3 @@ -/** - * @module TransactionViolation - * @description Transaction Violation - */ import PropTypes from 'prop-types'; /** From b77cf26129710c62b638080fa7d1ce2bb3f6dbf3 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 29 Nov 2023 16:43:12 -0500 Subject: [PATCH 017/130] feat(Violations): bring in new useViolations hook and ViolationUtils module from `violation-utils` branch --- src/libs/Violations/ViolationsUtils.ts | 39 +++++++++++++++--------- src/libs/Violations/useViolations.ts | 42 ++++++++++++++++++++------ 2 files changed, 57 insertions(+), 24 deletions(-) diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 192d75ec36ea..687786df6fb3 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -4,18 +4,16 @@ import ONYXKEYS from '@src/ONYXKEYS'; import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; const ViolationsUtils = { + /** + * Checks a transaction for policy violations and returns an object with Onyx method, key and updated transaction + * violations. + */ getViolationsOnyxData( - /** The transaction to check for policy violations. */ transaction: Transaction, - /** An array of existing transaction violations. */ transactionViolations: TransactionViolation[], - /** Indicates if the policy requires tags. */ policyRequiresTags: boolean, - /** Collection of policy tags and their enabled states. */ policyTags: PolicyTags, - /** Indicates if the policy requires categories. */ policyRequiresCategories: boolean, - /** Collection of policy categories and their enabled states. */ policyCategories: PolicyCategories, ): { onyxMethod: string; @@ -25,30 +23,43 @@ const ViolationsUtils = { let newTransactionViolations = [...transactionViolations]; if (policyRequiresCategories) { - const categoryViolationExists = transactionViolations.some((violation) => violation.name === 'categoryOutOfPolicy'); - const categoryIsInPolicy = policyCategories[transaction.category]?.enabled; + const hasCategoryViolation = Boolean(transactionViolations.some((violation) => Boolean(violation.name === 'categoryOutOfPolicy'))); + const hasMissingCategoryViolation = Boolean(transactionViolations.some((violation) => Boolean(violation.name === 'missingCategory'))); + + const isCategoryInPolicy = Boolean(policyCategories[transaction.category]?.enabled); // Add 'categoryOutOfPolicy' violation if category is not in policy - if (!categoryViolationExists && transaction.category && !categoryIsInPolicy) { + if (!hasCategoryViolation && transaction.category && !isCategoryInPolicy) { newTransactionViolations.push({name: 'categoryOutOfPolicy', type: 'violation', userMessage: ''}); } + // remove 'categoryOutOfPolicy' violation if category is in policy + if (hasCategoryViolation && transaction.category && isCategoryInPolicy) { + newTransactionViolations = reject(newTransactionViolations, {name: 'categoryOutOfPolicy'}); + } + // Remove 'missingCategory' violation if category is valid according to policy - if (categoryIsInPolicy) { + if (isCategoryInPolicy) { newTransactionViolations = reject(newTransactionViolations, {name: 'missingCategory'}); } + + // Add missingCategory violation if category is required and not set + if (!hasMissingCategoryViolation && isCategoryInPolicy && !transaction.category) { + newTransactionViolations.push({name: 'missingCategory', type: 'violation', userMessage: ''}); + } } if (policyRequiresTags) { + const hasTagViolation = Boolean(transactionViolations.some((violation) => violation.name === 'tagOutOfPolicy')); + const isTagInPolicy = Boolean(policyTags[transaction.tag]?.enabled); + // Add 'tagOutOfPolicy' violation if tag is not in policy - const tagViolationExists = transactionViolations.some((violation) => violation.name === 'tagOutOfPolicy'); - const tagInPolicy = policyTags[transaction.tag]?.enabled; - if (!tagViolationExists && transaction.tag && !tagInPolicy) { + if (!hasTagViolation && transaction.tag && !isTagInPolicy) { newTransactionViolations.push({name: 'tagOutOfPolicy', type: 'violation', userMessage: ''}); } // Remove 'missingTag' violation if tag is valid according to policy - if (tagInPolicy) { + if (isTagInPolicy) { newTransactionViolations = reject(newTransactionViolations, {name: 'missingTag'}); } } diff --git a/src/libs/Violations/useViolations.ts b/src/libs/Violations/useViolations.ts index 698c77871230..f136597f2691 100644 --- a/src/libs/Violations/useViolations.ts +++ b/src/libs/Violations/useViolations.ts @@ -2,34 +2,54 @@ import {useCallback, useMemo} from 'react'; import useLocalize from '@hooks/useLocalize'; import {TransactionViolation, ViolationName} from '@src/types/onyx'; + /** * Map from Violation Names to the field where that violation can occur */ const violationFields: Record = { - perDayLimit: 'amount', + allTagLevelsRequired: 'tag', + autoReportedRejectedExpense: 'amount', + billableExpense: 'billable', + cashExpenseWithNoReceipt: 'receipt', + categoryOutOfPolicy: 'category', + conversionSurcharge: 'amount', + customUnitOutOfPolicy: 'amount', + duplicatedTransaction: 'merchant', + fieldRequired: 'category', + futureDate: 'date', + invoiceMarkup: 'amount', maxAge: 'date', + missingCategory: 'category', + missingComment: 'comment', + missingTag: 'tag', + modifiedAmount: 'amount', + modifiedDate: 'date', + nonExpensiworksExpense: 'merchant', + overAutoApprovalLimit: 'amount', + overCategoryLimit: 'amount', overLimit: 'amount', overLimitAttendee: 'amount', - overCategoryLimit: 'amount', + perDayLimit: 'amount', + receiptNotSmartScanned: 'receipt', receiptRequired: 'receipt', - missingCategory: 'category', - categoryOutOfPolicy: 'category', - missingTag: 'tag', + rter: 'merchant', + smartscanFailed: 'receipt', + someTagLevelsRequired: 'tag', tagOutOfPolicy: 'tag', - missingComment: 'comment', - taxRequired: 'tax', + taxAmountChanged: 'tax', taxOutOfPolicy: 'tax', - billableExpense: 'billable', + taxRateChanged: 'tax', + taxRequired: 'tax', }; /** * Names of Fields where violations can occur */ -type ViolationField = 'merchant' | 'amount' | 'category' | 'date' | 'tag' | 'comment' | 'billable' | 'receipt' | 'tax'; +type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; type ViolationsMap = Map; -export default function useViolations(violations: TransactionViolation[]) { +function useViolations(violations: TransactionViolation[]) { const {translate} = useLocalize(); const violationsByField = useMemo((): ViolationsMap => { @@ -65,3 +85,5 @@ export default function useViolations(violations: TransactionViolation[]) { getViolationsForField, }; } + +export {useViolations, violationFields}; From e8e3717fc0e034d1ebd9b72285c2539d45f71fc9 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 29 Nov 2023 17:02:06 -0500 Subject: [PATCH 018/130] feat(Violations): extract FieldViolationMessages from MoneyRequestView, and move translation to the display component. --- src/components/FieldViolationMessages.tsx | 18 +++++++ .../ReportActionItem/MoneyRequestView.js | 50 ++++--------------- src/libs/Violations/useViolations.ts | 12 +---- 3 files changed, 30 insertions(+), 50 deletions(-) create mode 100644 src/components/FieldViolationMessages.tsx diff --git a/src/components/FieldViolationMessages.tsx b/src/components/FieldViolationMessages.tsx new file mode 100644 index 000000000000..4e7418ab41e2 --- /dev/null +++ b/src/components/FieldViolationMessages.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import {View} from 'react-native'; +import useLocalize from '@hooks/useLocalize'; +import {TransactionViolation} from '@src/types/onyx'; +import Text from './Text'; + +export default function FieldViolationMessages({violations}: {violations: TransactionViolation[]}) { + const {translate} = useLocalize(); + return ( + <> + {violations.map(({name}) => ( + + {translate(name)} + + ))} + + ); +} diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index a21dba08a9c3..f4edd92e5fb5 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -1,11 +1,11 @@ import lodashGet from 'lodash/get'; -import lodashMap from 'lodash/map'; import lodashValues from 'lodash/values'; import PropTypes from 'prop-types'; -import React, {useCallback, useMemo} from 'react'; +import React, {useMemo} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import categoryPropTypes from '@components/categoryPropTypes'; +import FieldViolationMessages from '@components/FieldViolationMessages'; import * as Expensicons from '@components/Icon/Expensicons'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; @@ -153,34 +153,6 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor } } - /** - * Returns am array of components, one for each violation message - * @example - * [ - * {"The amount exceeds the per-day limit"} - * , - * //... - * ] - * @type {function({field: string}): React.Node[]} - */ - const ViolationMessages = useCallback( - ({field}) => - lodashMap( - getViolationsForField(field), - /** - * Renders the formatted message for a violation - * @param {string} violationMessage The text of the violation message - * @returns {React.JSX.Element} A react component for each violation message - */ - (violationMessage) => ( - - {violationMessage} - - ), - ), - [getViolationsForField, styles.ph5, styles.textLabelError], - ); - // A temporary solution to hide the transaction detail // This will be removed after we properly add the transaction as a prop if (ReportActionsUtils.isDeletedAction(parentReportAction)) { @@ -213,7 +185,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor enablePreviewModal /> - + )} {!hasReceipt && canEdit && !isSettled && canUseViolations && ( @@ -235,7 +207,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} /> - + - + {isDistanceRequest ? ( @@ -275,7 +247,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasViolations('merchant') || (hasErrors && isEmptyMerchant) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> - + )} @@ -289,7 +261,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasViolations('date') || (hasErrors && transactionDate === '') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> - + {shouldShowCategory && ( @@ -302,7 +274,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} brickRoadIndicator={hasViolations('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - + )} {shouldShowTag && ( @@ -316,7 +288,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} brickRoadIndicator={hasViolations('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - + )} {isCardTransaction && ( @@ -335,10 +307,10 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} + onToggle={(value) => IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} /> - + )} diff --git a/src/libs/Violations/useViolations.ts b/src/libs/Violations/useViolations.ts index f136597f2691..42b0d79fcb81 100644 --- a/src/libs/Violations/useViolations.ts +++ b/src/libs/Violations/useViolations.ts @@ -1,8 +1,6 @@ import {useCallback, useMemo} from 'react'; -import useLocalize from '@hooks/useLocalize'; import {TransactionViolation, ViolationName} from '@src/types/onyx'; - /** * Map from Violation Names to the field where that violation can occur */ @@ -50,8 +48,6 @@ type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | type ViolationsMap = Map; function useViolations(violations: TransactionViolation[]) { - const {translate} = useLocalize(); - const violationsByField = useMemo((): ViolationsMap => { const violationGroups = new Map(); @@ -72,13 +68,7 @@ function useViolations(violations: TransactionViolation[]) { [violationsByField], ); - const getViolationsForField = useCallback( - (field: ViolationField) => { - const fieldViolations: TransactionViolation[] = violationsByField.get(field) ?? []; - return fieldViolations.map((violation) => translate(`violations.${violation.name}`)); - }, - [translate, violationsByField], - ); + const getViolationsForField = useCallback((field: ViolationField) => violationsByField.get(field) ?? [], [violationsByField]); return { hasViolations, From a7b21170514faa2642fe6de15749186ce4a8e875 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 29 Nov 2023 17:06:13 -0500 Subject: [PATCH 019/130] feat(Violations): memoize return values for hasViolations --- src/libs/Violations/useViolations.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/libs/Violations/useViolations.ts b/src/libs/Violations/useViolations.ts index 42b0d79fcb81..80a075a21cd6 100644 --- a/src/libs/Violations/useViolations.ts +++ b/src/libs/Violations/useViolations.ts @@ -1,6 +1,7 @@ import {useCallback, useMemo} from 'react'; import {TransactionViolation, ViolationName} from '@src/types/onyx'; + /** * Map from Violation Names to the field where that violation can occur */ @@ -46,27 +47,24 @@ const violationFields: Record = { type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; type ViolationsMap = Map; +type HasViolationsMap = Map; function useViolations(violations: TransactionViolation[]) { - const violationsByField = useMemo((): ViolationsMap => { + const {violationsByField, hasViolationsByField} = useMemo((): {violationsByField: ViolationsMap; hasViolationsByField: HasViolationsMap} => { const violationGroups = new Map(); + const hasViolationsMap = new Map(); for (const violation of violations) { const field = violationFields[violation.name]; const existingViolations = violationGroups.get(field) ?? []; violationGroups.set(field, [...existingViolations, violation]); + hasViolationsMap.set(field, true); } - return violationGroups; + return {violationsByField: violationGroups, hasViolationsByField: hasViolationsMap}; }, [violations]); - const hasViolations = useCallback( - (field: ViolationField) => { - const fieldViolations: TransactionViolation[] = violationsByField.get(field) ?? []; - return Boolean(fieldViolations.length > 0); - }, - [violationsByField], - ); + const hasViolations = useCallback((field: ViolationField) => Boolean(hasViolationsByField.get(field)), [violationsByField]); const getViolationsForField = useCallback((field: ViolationField) => violationsByField.get(field) ?? [], [violationsByField]); From cb7a551518d298bad4fd3f30bf2bc41d51c5895f Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 29 Nov 2023 17:07:58 -0500 Subject: [PATCH 020/130] feat(Violations): memoize return values for hasViolations --- src/libs/Violations/useViolations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/Violations/useViolations.ts b/src/libs/Violations/useViolations.ts index 80a075a21cd6..753778d629d6 100644 --- a/src/libs/Violations/useViolations.ts +++ b/src/libs/Violations/useViolations.ts @@ -64,7 +64,7 @@ function useViolations(violations: TransactionViolation[]) { return {violationsByField: violationGroups, hasViolationsByField: hasViolationsMap}; }, [violations]); - const hasViolations = useCallback((field: ViolationField) => Boolean(hasViolationsByField.get(field)), [violationsByField]); + const hasViolations = useCallback((field: ViolationField) => Boolean(hasViolationsByField.get(field)), [hasViolationsByField]); const getViolationsForField = useCallback((field: ViolationField) => violationsByField.get(field) ?? [], [violationsByField]); From ccc88c7d56d391fdfedddd4a22f3e4d5d33f4110 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 29 Nov 2023 17:42:51 -0500 Subject: [PATCH 021/130] feat(Violations): remove index --- src/libs/Violations/index.ts | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 src/libs/Violations/index.ts diff --git a/src/libs/Violations/index.ts b/src/libs/Violations/index.ts deleted file mode 100644 index 07bd9d523a97..000000000000 --- a/src/libs/Violations/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as useViolations from './useViolations'; -import * as ViolationsUtils from './ViolationsUtils'; - -export {useViolations, ViolationsUtils}; From f932509b29100843be5099e47286269b9c607580 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Fri, 1 Dec 2023 12:49:24 -0500 Subject: [PATCH 022/130] feat(Violations): prettier --- src/types/onyx/TransactionViolation.ts | 70 +++++++++++++------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 26ec474e6f3a..0b270bda3344 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,47 +1,48 @@ import PropTypes from 'prop-types'; + /** * Names of the Transaction Violations. * Defined as an array so it can be used in `PropTypes.oneOf` */ const violationNames = [ - 'allTagLevelsRequired' - , 'autoReportedRejectedExpense' - , 'billableExpense' - , 'cashExpenseWithNoReceipt' - , 'categoryOutOfPolicy' - , 'conversionSurcharge' - , 'customUnitOutOfPolicy' - , 'duplicatedTransaction' - , 'fieldRequired' - , 'futureDate' - , 'invoiceMarkup' - , 'maxAge' - , 'missingCategory' - , 'missingComment' - , 'missingTag' - , 'modifiedAmount' - , 'modifiedDate' - , 'nonExpensiworksExpense' - , 'overAutoApprovalLimit' - , 'overCategoryLimit' - , 'overLimit' - , 'overLimitAttendee' - , 'perDayLimit' - , 'receiptNotSmartScanned' - , 'receiptRequired' - , 'rter' - , 'smartscanFailed' - , 'someTagLevelsRequired' - , 'tagOutOfPolicy' - , 'taxAmountChanged' - , 'taxOutOfPolicy' - , 'taxRateChanged' - , 'taxRequired'] as const; + 'allTagLevelsRequired', + 'autoReportedRejectedExpense', + 'billableExpense', + 'cashExpenseWithNoReceipt', + 'categoryOutOfPolicy', + 'conversionSurcharge', + 'customUnitOutOfPolicy', + 'duplicatedTransaction', + 'fieldRequired', + 'futureDate', + 'invoiceMarkup', + 'maxAge', + 'missingCategory', + 'missingComment', + 'missingTag', + 'modifiedAmount', + 'modifiedDate', + 'nonExpensiworksExpense', + 'overAutoApprovalLimit', + 'overCategoryLimit', + 'overLimit', + 'overLimitAttendee', + 'perDayLimit', + 'receiptNotSmartScanned', + 'receiptRequired', + 'rter', + 'smartscanFailed', + 'someTagLevelsRequired', + 'tagOutOfPolicy', + 'taxAmountChanged', + 'taxOutOfPolicy', + 'taxRateChanged', + 'taxRequired', +] as const; type ViolationName = (typeof violationNames)[number]; - type TransactionViolation = { type: string; name: ViolationName; @@ -49,7 +50,6 @@ type TransactionViolation = { data?: Record; }; - const transactionViolationPropType = PropTypes.shape({ type: PropTypes.string.isRequired, name: PropTypes.oneOf(violationNames).isRequired, From 5e726fe09e6f8f626aef6f9c9220b8687ef345ea Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 4 Dec 2023 17:30:14 -0500 Subject: [PATCH 023/130] feat(Violations): declare hasViolations locally --- src/components/ReportActionItem/MoneyRequestView.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index f4edd92e5fb5..1e91f2bd01b2 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -1,7 +1,7 @@ import lodashGet from 'lodash/get'; import lodashValues from 'lodash/values'; import PropTypes from 'prop-types'; -import React, {useMemo} from 'react'; +import React, {useCallback, useMemo} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import categoryPropTypes from '@components/categoryPropTypes'; @@ -43,6 +43,7 @@ import ROUTES from '@src/ROUTES'; import {transactionViolationsPropTypes} from '@src/types/onyx/TransactionViolation'; import ReportActionItemImage from './ReportActionItemImage'; + const propTypes = { /** The report currently being looked at */ report: reportPropTypes.isRequired, @@ -131,7 +132,9 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowTag = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagsList))); const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); - const {hasViolations, getViolationsForField} = useViolations(transactionViolations); + const {getViolationsForField} = useViolations(transactionViolations); + + const hasViolations = useCallback((field) => Boolean(getViolationsForField(field).length > 0), [getViolationsForField]); let amountDescription = `${translate('iou.amount')}`; From 34ea21337b4c012786bcf206b827dc255186ceb5 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 5 Dec 2023 11:04:19 -0500 Subject: [PATCH 024/130] feat(Violations): prettier --- src/components/ReportActionItem/MoneyRequestView.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 41c80724cb52..fac7de9a430f 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -43,7 +43,6 @@ import ROUTES from '@src/ROUTES'; import {transactionViolationsPropTypes} from '@src/types/onyx/TransactionViolation'; import ReportActionItemImage from './ReportActionItemImage'; - const propTypes = { /** The report currently being looked at */ report: reportPropTypes.isRequired, @@ -134,7 +133,6 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); const {getViolationsForField} = useViolations(transactionViolations); - const hasViolations = useCallback((field) => Boolean(getViolationsForField(field).length > 0), [getViolationsForField]); let amountDescription = `${translate('iou.amount')}`; From 9c1d092e9a19cf52d40ab992d654aab5548f291f Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 5 Dec 2023 13:07:36 -0500 Subject: [PATCH 025/130] feat(Violations): add VIOLATIONS to CONST --- src/CONST.ts | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/CONST.ts b/src/CONST.ts index 43921d9a4457..6534862521fc 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -2884,12 +2884,48 @@ const CONST = { }, /** - * Constants for maxToRenderPerBatch parameter that is used for FlatList or SectionList. This controls the amount of items rendered per batch, which is the next chunk of items rendered on every scroll. + * Constants for maxToRenderPerBatch parameter that is used for FlatList or SectionList. This controls the amount + * of items rendered per batch, which is the next chunk of items rendered on every scroll. */ MAX_TO_RENDER_PER_BATCH: { DEFAULT: 5, CAROUSEL: 3, }, + VIOLATIONS: { + ALL_TAG_LEVELS_REQUIRED: 'allTagLevelsRequired', + AUTO_REPORTED_REJECTED_EXPENSE: 'autoReportedRejectedExpense', + BILLABLE_EXPENSE: 'billableExpense', + CASH_EXPENSE_WITH_NO_RECEIPT: 'cashExpenseWithNoReceipt', + CATEGORY_OUT_OF_POLICY: 'categoryOutOfPolicy', + CONVERSION_SURCHARGE: 'conversionSurcharge', + CUSTOM_UNIT_OUT_OF_POLICY: 'customUnitOutOfPolicy', + DUPLICATED_TRANSACTION: 'duplicatedTransaction', + FIELD_REQUIRED: 'fieldRequired', + FUTURE_DATE: 'futureDate', + INVOICE_MARKUP: 'invoiceMarkup', + MAX_AGE: 'maxAge', + MISSING_CATEGORY: 'missingCategory', + MISSING_COMMENT: 'missingComment', + MISSING_TAG: 'missingTag', + MODIFIED_AMOUNT: 'modifiedAmount', + MODIFIED_DATE: 'modifiedDate', + NON_EXPENSIWORKS_EXPENSE: 'nonExpensiworksExpense', + OVER_AUTO_APPROVAL_LIMIT: 'overAutoApprovalLimit', + OVER_CATEGORY_LIMIT: 'overCategoryLimit', + OVER_LIMIT: 'overLimit', + OVER_LIMIT_ATTENDEE: 'overLimitAttendee', + PER_DAY_LIMIT: 'perDayLimit', + RECEIPT_NOT_SMART_SCANNED: 'receiptNotSmartScanned', + RECEIPT_REQUIRED: 'receiptRequired', + RTER: 'rter', + SMARTSCAN_FAILED: 'smartscanFailed', + SOME_TAG_LEVELS_REQUIRED: 'someTagLevelsRequired', + TAG_OUT_OF_POLICY: 'tagOutOfPolicy', + TAX_AMOUNT_CHANGED: 'taxAmountChanged', + TAX_OUT_OF_POLICY: 'taxOutOfPolicy', + TAX_RATE_CHANGED: 'taxRateChanged', + TAX_REQUIRED: 'taxRequired', + }, } as const; export default CONST; From 3bddb2a8ad3223f4b10fc20c721188add07a63a4 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 5 Dec 2023 13:08:04 -0500 Subject: [PATCH 026/130] feat(Violations): remove unnecessary field prop and import styles --- src/components/FieldViolationMessages.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/FieldViolationMessages.tsx b/src/components/FieldViolationMessages.tsx index 4e7418ab41e2..e82995242ed2 100644 --- a/src/components/FieldViolationMessages.tsx +++ b/src/components/FieldViolationMessages.tsx @@ -1,16 +1,19 @@ import React from 'react'; import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; +import useThemeStyles from '@styles/useThemeStyles'; import {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; export default function FieldViolationMessages({violations}: {violations: TransactionViolation[]}) { const {translate} = useLocalize(); + const styles = useThemeStyles(); + return ( <> {violations.map(({name}) => ( - - {translate(name)} + + {translate(`violations.${name}`)} ))} From af453b63f49dc4c9129b54fd9c8802267a6b7dd1 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 5 Dec 2023 13:10:13 -0500 Subject: [PATCH 027/130] feat(Violations): refactor Violations types to depend on CONST --- .../ReportActionItem/MoneyRequestView.js | 4 +- src/hooks/useViolations.ts | 26 ++++++--- src/libs/Violations/ViolationField.ts | 6 ++ src/libs/{ => Violations}/ViolationsUtils.ts | 0 src/libs/Violations/propTypes.ts | 15 +++++ src/types/onyx/TransactionViolation.ts | 55 +------------------ tests/unit/ViolationUtilsTest.js | 2 +- 7 files changed, 44 insertions(+), 64 deletions(-) create mode 100644 src/libs/Violations/ViolationField.ts rename src/libs/{ => Violations}/ViolationsUtils.ts (100%) create mode 100644 src/libs/Violations/propTypes.ts diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index fac7de9a430f..334a42d73df9 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -18,6 +18,7 @@ import transactionPropTypes from '@components/transactionPropTypes'; import withCurrentUserPersonalDetails, {withCurrentUserPersonalDetailsPropTypes} from '@components/withCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import usePermissions from '@hooks/usePermissions'; +import useViolations from '@hooks/useViolations'; import useWindowDimensions from '@hooks/useWindowDimensions'; import * as CardUtils from '@libs/CardUtils'; import compose from '@libs/compose'; @@ -29,7 +30,7 @@ import * as ReceiptUtils from '@libs/ReceiptUtils'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; -import {useViolations} from '@libs/Violations'; +import {transactionViolationsPropTypes} from '@libs/Violations/propTypes'; import AnimatedEmptyStateBackground from '@pages/home/report/AnimatedEmptyStateBackground'; import iouReportPropTypes from '@pages/iouReportPropTypes'; import reportPropTypes from '@pages/reportPropTypes'; @@ -40,7 +41,6 @@ import * as IOU from '@userActions/IOU'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import {transactionViolationsPropTypes} from '@src/types/onyx/TransactionViolation'; import ReportActionItemImage from './ReportActionItemImage'; const propTypes = { diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index 3aef5cd9b716..7e50bd4a3006 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -1,13 +1,9 @@ import {useCallback, useMemo} from 'react'; +import ViolationField from '@libs/Violations/ViolationField'; import {TransactionViolation, ViolationName} from '@src/types/onyx'; /** - * Names of Fields where violations can occur - */ -type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; - -/** - * Map from Violation Names to the field where that violation can occur + * Map from Violation Names to the field where that violation can occur. */ const violationFields: Record = { allTagLevelsRequired: 'tag', @@ -47,11 +43,17 @@ const violationFields: Record = { type ViolationsMap = Map; +/** + * Hook to access violations for a transaction. Returns `getViolationsForField()` + * @example const {getViolationsForField} = useViolations(transactionViolations); + * @param violations - Array of {@link TransactionViolation}s + * @returns - Object with `getViolationsForField()` callback + */ function useViolations(violations: TransactionViolation[]) { const violationsByField = useMemo((): ViolationsMap => { const violationGroups = new Map(); - for (const violation of violations) { + for (const violation of violations ?? []) { const field = violationFields[violation.name]; const existingViolations = violationGroups.get(field) ?? []; violationGroups.set(field, [...existingViolations, violation]); @@ -60,11 +62,17 @@ function useViolations(violations: TransactionViolation[]) { return violationGroups ?? new Map(); }, [violations]); - const hasViolations = useCallback((field: ViolationField) => Boolean(violationsByField.get(field)?.length), [violationsByField]); + /** + * Callback that filters the list of {@link TransactionViolation}s provided to the hook, + * and returns only those that apply to the given {@link ViolationField}. + * (return value memoized to prevent re-renders) + * @example const violations = getViolationsForField('amount'); + * @param {ViolationField} field - ViolationField to get violations for (e.g. 'amount', 'billable', 'category', + * etc.) + */ const getViolationsForField = useCallback((field: ViolationField) => violationsByField.get(field) ?? [], [violationsByField]); return { - hasViolations, getViolationsForField, }; } diff --git a/src/libs/Violations/ViolationField.ts b/src/libs/Violations/ViolationField.ts new file mode 100644 index 000000000000..fbd1b95f927f --- /dev/null +++ b/src/libs/Violations/ViolationField.ts @@ -0,0 +1,6 @@ +/** + * Names of Fields where violations can occur + */ +type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; + +export default ViolationField; diff --git a/src/libs/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts similarity index 100% rename from src/libs/ViolationsUtils.ts rename to src/libs/Violations/ViolationsUtils.ts diff --git a/src/libs/Violations/propTypes.ts b/src/libs/Violations/propTypes.ts new file mode 100644 index 000000000000..c3c0527dfa9a --- /dev/null +++ b/src/libs/Violations/propTypes.ts @@ -0,0 +1,15 @@ +import PropTypes from 'prop-types'; +import CONST from '@src/CONST'; +import {ViolationName} from '@src/types/onyx'; + +const violationNames = Object.values(CONST.VIOLATIONS) as ViolationName[]; + +const transactionViolationPropType = PropTypes.shape({ + type: PropTypes.string.isRequired, + name: PropTypes.oneOf(violationNames).isRequired, + userMessage: PropTypes.string.isRequired, + data: PropTypes.objectOf(PropTypes.string), +}); +const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); + +export {transactionViolationsPropTypes, transactionViolationPropType}; diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 0b270bda3344..9681dd38be14 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,47 +1,9 @@ -import PropTypes from 'prop-types'; - +import CONST from '@src/CONST'; /** - * Names of the Transaction Violations. - * Defined as an array so it can be used in `PropTypes.oneOf` + * Names of Fields where violations can occur. Derived from `CONST.VIOLATIONS` to maintain a single source of truth. */ -const violationNames = [ - 'allTagLevelsRequired', - 'autoReportedRejectedExpense', - 'billableExpense', - 'cashExpenseWithNoReceipt', - 'categoryOutOfPolicy', - 'conversionSurcharge', - 'customUnitOutOfPolicy', - 'duplicatedTransaction', - 'fieldRequired', - 'futureDate', - 'invoiceMarkup', - 'maxAge', - 'missingCategory', - 'missingComment', - 'missingTag', - 'modifiedAmount', - 'modifiedDate', - 'nonExpensiworksExpense', - 'overAutoApprovalLimit', - 'overCategoryLimit', - 'overLimit', - 'overLimitAttendee', - 'perDayLimit', - 'receiptNotSmartScanned', - 'receiptRequired', - 'rter', - 'smartscanFailed', - 'someTagLevelsRequired', - 'tagOutOfPolicy', - 'taxAmountChanged', - 'taxOutOfPolicy', - 'taxRateChanged', - 'taxRequired', -] as const; - -type ViolationName = (typeof violationNames)[number]; +type ViolationName = (typeof CONST.VIOLATIONS)[keyof typeof CONST.VIOLATIONS]; type TransactionViolation = { type: string; @@ -50,15 +12,4 @@ type TransactionViolation = { data?: Record; }; -const transactionViolationPropType = PropTypes.shape({ - type: PropTypes.string.isRequired, - name: PropTypes.oneOf(violationNames).isRequired, - userMessage: PropTypes.string.isRequired, - data: PropTypes.objectOf(PropTypes.string), -}); - -const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); - -export {transactionViolationPropType, transactionViolationsPropTypes, violationNames}; - export type {TransactionViolation, ViolationName}; diff --git a/tests/unit/ViolationUtilsTest.js b/tests/unit/ViolationUtilsTest.js index cc84c547da2e..f0b53443831e 100644 --- a/tests/unit/ViolationUtilsTest.js +++ b/tests/unit/ViolationUtilsTest.js @@ -1,6 +1,6 @@ import {beforeEach} from '@jest/globals'; import Onyx from 'react-native-onyx'; -import ViolationsUtils from '@libs/ViolationsUtils'; +import ViolationsUtils from '@libs/Violations/ViolationsUtils'; import ONYXKEYS from '@src/ONYXKEYS'; const categoryOutOfPolicyViolation = { From 2532ae97bdd7776ab08f840c8286fc650ce97bc2 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 6 Dec 2023 17:51:09 -0500 Subject: [PATCH 028/130] feat(Violations): Add checks to make sure user has access to the violations Beta, and add missing RBR indicator on amount. --- .../ReportActionItem/MoneyRequestView.js | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 334a42d73df9..e559c31daab0 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -133,7 +133,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); const {getViolationsForField} = useViolations(transactionViolations); - const hasViolations = useCallback((field) => Boolean(getViolationsForField(field).length > 0), [getViolationsForField]); + const hasViolations = useCallback((field) => canUseViolations && Boolean(getViolationsForField(field).length > 0), [getViolationsForField]); let amountDescription = `${translate('iou.amount')}`; @@ -192,15 +192,15 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor enablePreviewModal /> - )} - {!hasReceipt && canEdit && !isSettled && canUseViolations && ( + {!hasReceipt && canEdit && !isSettled && ( Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.RECEIPT))} /> )} + {canUseViolations && } Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.AMOUNT))} - brickRoadIndicator={hasErrors && transactionAmount === 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + brickRoadIndicator={hasViolations('amount') || (hasErrors && transactionAmount === 0) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionAmount === 0 ? translate('common.error.enterAmount') : ''} /> - + {canUseViolations && } - + {canUseViolations && } {isDistanceRequest ? ( @@ -254,7 +254,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasViolations('merchant') || (hasErrors && isEmptyMerchant) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> - + {canUseViolations && } )} @@ -268,7 +268,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor brickRoadIndicator={hasViolations('date') || (hasErrors && transactionDate === '') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> - + {canUseViolations && } {shouldShowCategory && ( @@ -281,7 +281,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} brickRoadIndicator={hasViolations('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - + {canUseViolations && } )} {shouldShowTag && ( @@ -295,7 +295,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} brickRoadIndicator={hasViolations('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - + {canUseViolations && } )} {isCardTransaction && ( @@ -317,7 +317,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor onToggle={(value) => IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} /> - + {canUseViolations && } )} From f757a27b77a33634abdd9fb9b16a766c22dbd240 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 6 Dec 2023 17:53:21 -0500 Subject: [PATCH 029/130] feat(Violations): Move ViolationField into useViolations --- src/hooks/useViolations.ts | 9 +++++++-- src/libs/Violations/ViolationField.ts | 6 ------ 2 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 src/libs/Violations/ViolationField.ts diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index 7e50bd4a3006..5ddc3a01bc0d 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -1,7 +1,11 @@ import {useCallback, useMemo} from 'react'; -import ViolationField from '@libs/Violations/ViolationField'; import {TransactionViolation, ViolationName} from '@src/types/onyx'; +/** + * Names of Fields where violations can occur + */ +type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; + /** * Map from Violation Names to the field where that violation can occur. */ @@ -67,7 +71,7 @@ function useViolations(violations: TransactionViolation[]) { * and returns only those that apply to the given {@link ViolationField}. * (return value memoized to prevent re-renders) * @example const violations = getViolationsForField('amount'); - * @param {ViolationField} field - ViolationField to get violations for (e.g. 'amount', 'billable', 'category', + * @param field - ViolationField to get violations for (e.g. 'amount', 'billable', 'category', * etc.) */ const getViolationsForField = useCallback((field: ViolationField) => violationsByField.get(field) ?? [], [violationsByField]); @@ -78,3 +82,4 @@ function useViolations(violations: TransactionViolation[]) { } export default useViolations; +export type {ViolationField}; diff --git a/src/libs/Violations/ViolationField.ts b/src/libs/Violations/ViolationField.ts deleted file mode 100644 index fbd1b95f927f..000000000000 --- a/src/libs/Violations/ViolationField.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Names of Fields where violations can occur - */ -type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; - -export default ViolationField; From 405672da02732abd799cb566f25f15636bfda85d Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 6 Dec 2023 18:09:33 -0500 Subject: [PATCH 030/130] feat(Violations): add missing dependency to array --- src/components/ReportActionItem/MoneyRequestView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index e559c31daab0..e7e833a4ff30 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -133,7 +133,7 @@ function MoneyRequestView({report, parentReport, policyCategories, shouldShowHor const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); const {getViolationsForField} = useViolations(transactionViolations); - const hasViolations = useCallback((field) => canUseViolations && Boolean(getViolationsForField(field).length > 0), [getViolationsForField]); + const hasViolations = useCallback((field) => canUseViolations && Boolean(getViolationsForField(field).length > 0), [canUseViolations, getViolationsForField]); let amountDescription = `${translate('iou.amount')}`; From f853ce0e26043527afcb558c3cadfbae51a54a11 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 6 Dec 2023 18:21:11 -0500 Subject: [PATCH 031/130] feat(Violations): remove unnecessary guard --- src/hooks/useViolations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index 5ddc3a01bc0d..f40807cf98b1 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -57,7 +57,7 @@ function useViolations(violations: TransactionViolation[]) { const violationsByField = useMemo((): ViolationsMap => { const violationGroups = new Map(); - for (const violation of violations ?? []) { + for (const violation of violations) { const field = violationFields[violation.name]; const existingViolations = violationGroups.get(field) ?? []; violationGroups.set(field, [...existingViolations, violation]); From 0fc7eb34d298c4b9a8881a4318ed6954d98f9f53 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Fri, 8 Dec 2023 13:39:39 +0100 Subject: [PATCH 032/130] fix: add isWeb check for tab syncing --- .../report/ReportActionCompose/SilentCommentUpdater.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js index 9aa997a892f4..4b08dc428695 100644 --- a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js +++ b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js @@ -4,6 +4,8 @@ import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import usePrevious from '@hooks/usePrevious'; import ONYXKEYS from '@src/ONYXKEYS'; +import CONST from '@src/CONST'; +import getPlatform from '@libs/getPlatform'; const propTypes = { /** The comment of the report */ @@ -32,6 +34,8 @@ const defaultProps = { comment: '', }; +const isWeb = getPlatform() === CONST.PLATFORM.WEB + /** * This component doesn't render anything. It runs a side effect to update the comment of a report under certain conditions. * It is connected to the actual draft comment in onyx. The comment in onyx might updates multiple times, and we want to avoid @@ -52,7 +56,9 @@ function SilentCommentUpdater({comment, commentRef, report, value, updateComment useEffect(() => { // Value state does not have the same value as comment props when the comment gets changed from another tab. // In this case, we should synchronize the value between tabs. - const shouldSyncComment = prevCommentProp !== comment && value !== comment; + + // Adding isWeb check to fix issue on Android, assuming we don't need tab sync on mobiles - https://github.com/Expensify/App/issues/28562 + const shouldSyncComment = isWeb && prevCommentProp !== comment && value !== comment; // As the report IDs change, make sure to update the composer comment as we need to make sure // we do not show incorrect data in there (ie. draft of message from other report). @@ -61,7 +67,7 @@ function SilentCommentUpdater({comment, commentRef, report, value, updateComment } updateComment(comment); - }, [prevCommentProp, prevPreferredLocale, prevReportId, comment, preferredLocale, report.reportID, updateComment, value, commentRef]); + }, [prevCommentProp, prevPreferredLocale, prevReportId, comment, preferredLocale, report.reportID, updateComment, value, commentRef, isWeb]); return null; } From f649598eb32f10f2e369f4810f5bfcd4801233bd Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Fri, 8 Dec 2023 12:42:31 -0500 Subject: [PATCH 033/130] feat(Violations): add english violation translations and types. --- src/languages/en.ts | 95 +++++++++++++++-------- src/languages/types.ts | 170 ++++++++++++++++++++++++++--------------- 2 files changed, 171 insertions(+), 94 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index a276de4e0f7c..0f9956b25dc2 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -72,6 +72,20 @@ import type { UpdatedTheDistanceParams, UpdatedTheRequestParams, UserIsAlreadyMemberParams, + ViolationsAutoReportedRejectedExpenseParams, + ViolationsCashExpenseWithNoReceiptParams, + ViolationsConversionSurchargeParams, + ViolationsInvoiceMarkupParams, + ViolationsMaxAgeParams, + ViolationsMissingTagParams, + ViolationsOverAutoApprovalLimitParams, + ViolationsOverCategoryLimitParams, + ViolationsOverLimitParams, + ViolationsPerDayLimitParams, + ViolationsReceiptRequiredParams, + ViolationsRterParams, + ViolationsTagOutOfPolicyParams, + ViolationsTaxOutOfPolicyParams, WaitingOnBankAccountParams, WalletProgramParams, WelcomeEnterMagicCodeParams, @@ -1990,38 +2004,53 @@ export default { copyReferralLink: 'Copy referral link', }, violations: { - allTagLevelsRequired: 'dummy.violations.allTagLevelsRequired', - autoReportedRejectedExpense: 'dummy.violations.autoReportedRejectedExpense', - billableExpense: 'dummy.violations.billableExpense', - cashExpenseWithNoReceipt: 'dummy.violations.cashExpenseWithNoReceipt', - categoryOutOfPolicy: 'dummy.violations.categoryOutOfPolicy', - conversionSurcharge: 'dummy.violations.conversionSurcharge', - customUnitOutOfPolicy: 'dummy.violations.customUnitOutOfPolicy', - duplicatedTransaction: 'dummy.violations.duplicatedTransaction', - fieldRequired: 'dummy.violations.fieldRequired', - futureDate: 'dummy.violations.futureDate', - invoiceMarkup: 'dummy.violations.invoiceMarkup', - maxAge: 'dummy.violations.maxAge', - missingCategory: 'dummy.violations.missingCategory', - missingComment: 'dummy.violations.missingComment', - missingTag: 'dummy.violations.missingTag', - modifiedAmount: 'dummy.violations.modifiedAmount', - modifiedDate: 'dummy.violations.modifiedDate', - nonExpensiworksExpense: 'dummy.violations.nonExpensiworksExpense', - overAutoApprovalLimit: 'dummy.violations.overAutoApprovalLimit', - overCategoryLimit: 'dummy.violations.overCategoryLimit', - overLimit: 'dummy.violations.overLimit', - overLimitAttendee: 'dummy.violations.overLimitAttendee', - perDayLimit: 'dummy.violations.perDayLimit', - receiptNotSmartScanned: 'dummy.violations.receiptNotSmartScanned', - receiptRequired: 'dummy.violations.receiptRequired', - rter: 'dummy.violations.rter', - smartscanFailed: 'dummy.violations.smartscanFailed', - someTagLevelsRequired: 'dummy.violations.someTagLevelsRequired', - tagOutOfPolicy: 'dummy.violations.tagOutOfPolicy', - taxAmountChanged: 'dummy.violations.taxAmountChanged', - taxOutOfPolicy: 'dummy.violations.taxOutOfPolicy', - taxRateChanged: 'dummy.violations.taxRateChanged', - taxRequired: 'dummy.violations.taxRequired', + allTagLevelsRequired: 'All tags required', + autoReportedRejectedExpense: ({rejectedBy, rejectReason}: ViolationsAutoReportedRejectedExpenseParams) => `${rejectedBy} rejected this expense with the comment "${rejectReason}"`, + billableExpense: 'Billable no longer valid', + cashExpenseWithNoReceipt: ({amount}: ViolationsCashExpenseWithNoReceiptParams) => `Receipt required over ${amount}`, + categoryOutOfPolicy: 'Category no longer valid', + conversionSurcharge: ({surcharge}: ViolationsConversionSurchargeParams) => `Applied ${surcharge}% conversion surcharge`, + customUnitOutOfPolicy: 'Unit no longer valid', + duplicatedTransaction: 'Potential duplicate', + fieldRequired: 'Report fields are required', + futureDate: 'Future date not allowed', + invoiceMarkup: ({invoiceMarkup}: ViolationsInvoiceMarkupParams) => `Marked up by ${invoiceMarkup}%`, + maxAge: ({workspaceMaxExpenseAge}: ViolationsMaxAgeParams) => `Date older than ${workspaceMaxExpenseAge} days`, + missingCategory: 'Missing category', + missingComment: 'Missing comment', + missingTag: ({tagName}: ViolationsMissingTagParams) => `Missing ${tagName}`, + modifiedAmount: 'Amount greater than scanned receipt', + modifiedDate: 'Date differs from scanned receipt', + nonExpensiworksExpense: 'Non-Expensiworks expense', + overAutoApprovalLimit: ({formattedLimitAmount}: ViolationsOverAutoApprovalLimitParams) => `Expense exceeds auto approval limit of ${formattedLimitAmount}`, + overCategoryLimit: ({categoryLimit}: ViolationsOverCategoryLimitParams) => `Amount over ${categoryLimit}/person category limit`, + overLimit: ({amount}: ViolationsOverLimitParams) => `Amount over ${amount}/person limit`, + overLimitAttendee: ({amount}: ViolationsOverLimitParams) => `Amount over ${amount}/person limit`, + perDayLimit: ({limit}: ViolationsPerDayLimitParams) => `Amount over daily ${limit}/person category limit`, + receiptNotSmartScanned: 'Receipt not verified. Please confirm accuracy.', + receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Receipt required over ${amount} ${category ? ' category limit' : ''}`, + rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { + if (brokenBankConnection && isAdmin) { + return "Can't auto-match receipt due to broken bank connection which you need to fix"; + } + if (brokenBankConnection) { + return `Can't auto-match receipt due to broken bank connection which ${email} needs to fix`; + } + if (isAdmin && !isTransactionOlderThan7Days) { + return `Ask ${member} to mark as a cash or wait 7 days and try again`; + } + + if (!isTransactionOlderThan7Days) { + return `Awaiting merge with card transaction.`; + } + return ``; + }, + smartscanFailed: 'Receipt scanning failed. Enter details manually.', + someTagLevelsRequired: 'Missing tag', + tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams) => `${tagName} no longer valid`, + taxAmountChanged: 'Tax amount was modified', + taxOutOfPolicy: ({taxName}: ViolationsTaxOutOfPolicyParams) => `${taxName} no longer valid`, + taxRateChanged: 'Tax rate was modified', + taxRequired: 'Missing tax rate', }, } satisfies TranslationBase; diff --git a/src/languages/types.ts b/src/languages/types.ts index 9f66dc6f97ec..c2a5e55bce25 100644 --- a/src/languages/types.ts +++ b/src/languages/types.ts @@ -205,6 +205,40 @@ type TagSelectionParams = {tagName: string}; type WalletProgramParams = {walletProgram: string}; +type ViolationsAutoReportedRejectedExpenseParams = {rejectedBy: string; rejectReason: string}; + +type ViolationsCashExpenseWithNoReceiptParams = {amount: string}; + +type ViolationsConversionSurchargeParams = {surcharge: number}; + +type ViolationsInvoiceMarkupParams = {invoiceMarkup: number}; + +type ViolationsMaxAgeParams = {workspaceMaxExpenseAge: number}; + +type ViolationsMissingTagParams = {tagName: string}; + +type ViolationsOverAutoApprovalLimitParams = {formattedLimitAmount: string}; + +type ViolationsOverCategoryLimitParams = {categoryLimit: string}; + +type ViolationsOverLimitParams = {amount: string}; + +type ViolationsPerDayLimitParams = {limit: string}; + +type ViolationsReceiptRequiredParams = {amount: string; category?: string}; + +type ViolationsRterParams = { + brokenBankConnection: boolean; + isAdmin: boolean; + email?: string; + isTransactionOlderThan7Days: boolean; + member?: string; +}; + +type ViolationsTagOutOfPolicyParams = {tagName: string}; + +type ViolationsTaxOutOfPolicyParams = {taxName: string}; + /* Translation Object types */ // eslint-disable-next-line @typescript-eslint/no-explicit-any type TranslationBaseValue = string | string[] | ((...args: any[]) => string); @@ -245,83 +279,97 @@ type TranslationFlatObject = { export type { TranslationBase, - TranslationPaths, - EnglishTranslation, - TranslationFlatObject, AddressLineParams, - CharacterLimitParams, - MaxParticipantsReachedParams, - ZipCodeExampleFormatParams, - LoggedInAsParams, - NewFaceEnterMagicCodeParams, - WelcomeEnterMagicCodeParams, AlreadySignedInParams, - GoBackMessageParams, - LocalTimeParams, - EditActionParams, - DeleteActionParams, - DeleteConfirmationParams, - BeginningOfChatHistoryDomainRoomPartOneParams, + AmountEachParams, + ViolationsAutoReportedRejectedExpenseParams, BeginningOfChatHistoryAdminRoomPartOneParams, BeginningOfChatHistoryAnnounceRoomPartOneParams, BeginningOfChatHistoryAnnounceRoomPartTwo, - WelcomeToRoomParams, - ReportArchiveReasonsClosedParams, - ReportArchiveReasonsMergedParams, - ReportArchiveReasonsRemovedFromPolicyParams, - ReportArchiveReasonsPolicyDeletedParams, - RequestCountParams, - SettleExpensifyCardParams, - RequestAmountParams, - RequestedAmountMessageParams, - SplitAmountParams, + BeginningOfChatHistoryDomainRoomPartOneParams, + CanceledRequestParams, + ViolationsCashExpenseWithNoReceiptParams, + CharacterLimitParams, + ConfirmThatParams, + ViolationsConversionSurchargeParams, + DateShouldBeAfterParams, + DateShouldBeBeforeParams, + DeleteActionParams, + DeleteConfirmationParams, DidSplitAmountMessageParams, - AmountEachParams, + EditActionParams, + EnglishTranslation, + EnterMagicCodeParams, + FormattedMaxLengthParams, + GoBackMessageParams, + GoToRoomParams, + IncorrectZipFormatParams, + InstantSummaryParams, + ViolationsInvoiceMarkupParams, + LocalTimeParams, + LoggedInAsParams, + ManagerApprovedParams, + ViolationsMaxAgeParams, + MaxParticipantsReachedParams, + ViolationsMissingTagParams, + NewFaceEnterMagicCodeParams, + NoLongerHaveAccessParams, + NotAllowedExtensionParams, + NotYouParams, + OOOEventSummaryFullDayParams, + OOOEventSummaryPartialDayParams, + OurEmailProviderParams, + ViolationsOverAutoApprovalLimitParams, + ViolationsOverCategoryLimitParams, + ViolationsOverLimitParams, + PaidElsewhereWithAmountParams, + PaidWithExpensifyWithAmountParams, + ParentNavigationSummaryParams, PayerOwesAmountParams, PayerOwesParams, PayerPaidAmountParams, PayerPaidParams, - ManagerApprovedParams, PayerSettledParams, - WaitingOnBankAccountParams, - CanceledRequestParams, - SettledAfterAddedBankAccountParams, - PaidElsewhereWithAmountParams, - PaidWithExpensifyWithAmountParams, - ThreadRequestReportNameParams, - ThreadSentMoneyReportNameParams, - SizeExceededParams, + ViolationsPerDayLimitParams, + ViolationsReceiptRequiredParams, + RemovedTheRequestParams, + RenamedRoomActionParams, + ReportArchiveReasonsClosedParams, + ReportArchiveReasonsMergedParams, + ReportArchiveReasonsPolicyDeletedParams, + ReportArchiveReasonsRemovedFromPolicyParams, + RequestAmountParams, + RequestCountParams, + RequestedAmountMessageParams, ResolutionConstraintsParams, - NotAllowedExtensionParams, - EnterMagicCodeParams, - TransferParams, - InstantSummaryParams, - NotYouParams, - DateShouldBeBeforeParams, - DateShouldBeAfterParams, - IncorrectZipFormatParams, - WeSentYouMagicSignInLinkParams, - ToValidateLoginParams, - NoLongerHaveAccessParams, - OurEmailProviderParams, - ConfirmThatParams, - UntilTimeParams, - StepCounterParams, - UserIsAlreadyMemberParams, - GoToRoomParams, - WelcomeNoteParams, RoomNameReservedErrorParams, - RenamedRoomActionParams, RoomRenamedToParams, - OOOEventSummaryFullDayParams, - OOOEventSummaryPartialDayParams, - ParentNavigationSummaryParams, + ViolationsRterParams, + SetTheDistanceParams, SetTheRequestParams, - UpdatedTheRequestParams, - RemovedTheRequestParams, - FormattedMaxLengthParams, + SettledAfterAddedBankAccountParams, + SettleExpensifyCardParams, + SizeExceededParams, + SplitAmountParams, + StepCounterParams, + ViolationsTagOutOfPolicyParams, TagSelectionParams, - SetTheDistanceParams, + ViolationsTaxOutOfPolicyParams, + ThreadRequestReportNameParams, + ThreadSentMoneyReportNameParams, + ToValidateLoginParams, + TransferParams, + TranslationFlatObject, + TranslationPaths, + UntilTimeParams, UpdatedTheDistanceParams, + UpdatedTheRequestParams, + UserIsAlreadyMemberParams, + WaitingOnBankAccountParams, WalletProgramParams, + WelcomeEnterMagicCodeParams, + WelcomeNoteParams, + WelcomeToRoomParams, + WeSentYouMagicSignInLinkParams, + ZipCodeExampleFormatParams, }; From 29f8bbddc252da28c98a834bfe6e5beafcbfb9e9 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Fri, 8 Dec 2023 12:46:38 -0500 Subject: [PATCH 034/130] feat(Violations): add spanish translations --- src/languages/es.ts | 89 ++++++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 33 deletions(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index 290d80a6f65d..b5111d66e4c4 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -71,6 +71,20 @@ import type { UpdatedTheDistanceParams, UpdatedTheRequestParams, UserIsAlreadyMemberParams, + ViolationsAutoReportedRejectedExpenseParams, + ViolationsCashExpenseWithNoReceiptParams, + ViolationsConversionSurchargeParams, + ViolationsInvoiceMarkupParams, + ViolationsMaxAgeParams, + ViolationsMissingTagParams, + ViolationsOverAutoApprovalLimitParams, + ViolationsOverCategoryLimitParams, + ViolationsOverLimitParams, + ViolationsPerDayLimitParams, + ViolationsReceiptRequiredParams, + ViolationsRterParams, + ViolationsTagOutOfPolicyParams, + ViolationsTaxOutOfPolicyParams, WaitingOnBankAccountParams, WalletProgramParams, WelcomeEnterMagicCodeParams, @@ -2475,38 +2489,47 @@ export default { copyReferralLink: 'Copiar enlace de invitación', }, violations: { - allTagLevelsRequired: 'dummy.violations.allTagLevelsRequired', - autoReportedRejectedExpense: 'dummy.violations.autoReportedRejectedExpense', - billableExpense: 'dummy.violations.billableExpense', - cashExpenseWithNoReceipt: 'dummy.violations.cashExpenseWithNoReceipt', - categoryOutOfPolicy: 'dummy.violations.categoryOutOfPolicy', - conversionSurcharge: 'dummy.violations.conversionSurcharge', - customUnitOutOfPolicy: 'dummy.violations.customUnitOutOfPolicy', - duplicatedTransaction: 'dummy.violations.duplicatedTransaction', - fieldRequired: 'dummy.violations.fieldRequired', - futureDate: 'dummy.violations.futureDate', - invoiceMarkup: 'dummy.violations.invoiceMarkup', - maxAge: 'dummy.violations.maxAge', - missingCategory: 'dummy.violations.missingCategory', - missingComment: 'dummy.violations.missingComment', - missingTag: 'dummy.violations.missingTag', - modifiedAmount: 'dummy.violations.modifiedAmount', - modifiedDate: 'dummy.violations.modifiedDate', - nonExpensiworksExpense: 'dummy.violations.nonExpensiworksExpense', - overAutoApprovalLimit: 'dummy.violations.overAutoApprovalLimit', - overCategoryLimit: 'dummy.violations.overCategoryLimit', - overLimit: 'dummy.violations.overLimit', - overLimitAttendee: 'dummy.violations.overLimitAttendee', - perDayLimit: 'dummy.violations.perDayLimit', - receiptNotSmartScanned: 'dummy.violations.receiptNotSmartScanned', - receiptRequired: 'dummy.violations.receiptRequired', - rter: 'dummy.violations.rter', - smartscanFailed: 'dummy.violations.smartscanFailed', - someTagLevelsRequired: 'dummy.violations.someTagLevelsRequired', - tagOutOfPolicy: 'dummy.violations.tagOutOfPolicy', - taxAmountChanged: 'dummy.violations.taxAmountChanged', - taxOutOfPolicy: 'dummy.violations.taxOutOfPolicy', - taxRateChanged: 'dummy.violations.taxRateChanged', - taxRequired: 'dummy.violations.taxRequired', + allTagLevelsRequired: 'Todas las etiquetas son obligatorias', + autoReportedRejectedExpense: ({rejectedBy, rejectReason}: ViolationsAutoReportedRejectedExpenseParams) => `${rejectedBy} rechazó la solicitud y comentó "${rejectReason}"`, + billableExpense: 'La opción facturable ya no es válida', + cashExpenseWithNoReceipt: ({amount}: ViolationsCashExpenseWithNoReceiptParams) => `Recibo obligatorio para montos mayores a ${amount}`, + categoryOutOfPolicy: 'La categoría ya no es válida', + conversionSurcharge: ({surcharge}: ViolationsConversionSurchargeParams) => `${surcharge}% de recargo aplicado`, + customUnitOutOfPolicy: 'Unidad ya no es válida', + duplicatedTransaction: 'Potencial duplicado', + fieldRequired: 'Los campos del informe son obligatorios', + futureDate: 'Fecha futura no permitida', + invoiceMarkup: ({invoiceMarkup}: ViolationsInvoiceMarkupParams) => `Incrementado un ${invoiceMarkup}%`, + maxAge: ({workspaceMaxExpenseAge}: ViolationsMaxAgeParams) => `Fecha de más de ${workspaceMaxExpenseAge} días`, + missingCategory: 'Falta categoría', + missingComment: 'Falta comentario', + missingTag: ({tagName}: ViolationsMissingTagParams) => `Falta ${tagName}`, + modifiedAmount: 'Importe superior al del recibo escaneado', + modifiedDate: 'Fecha difiere del recibo escaneado', + nonExpensiworksExpense: 'Gasto no es de Expensiworks', + overAutoApprovalLimit: ({formattedLimitAmount}: ViolationsOverAutoApprovalLimitParams) => `Importe supera el límite de aprobación automática de ${formattedLimitAmount}`, + overCategoryLimit: ({categoryLimit}: ViolationsOverCategoryLimitParams) => `Importe supera el límite para la categoría de ${categoryLimit}/persona`, + overLimit: ({amount}: ViolationsOverLimitParams) => `Importe supera el límite de ${amount}/persona`, + overLimitAttendee: ({amount}: ViolationsOverLimitParams) => `Importe supera el límite de ${amount}/persona`, + perDayLimit: ({limit}: ViolationsPerDayLimitParams) => `Importe supera el límite diario de la categoría de ${limit}/persona`, + receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma su exactitud', + receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Recibo obligatorio para importes sobre ${amount} ${category ? ' el limite de la categoría de' : ''}`, + rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => + brokenBankConnection && isAdmin + ? `No se puede adjuntar recibo debido a una conexión con su banco que necesita arreglar` + : brokenBankConnection + ? `No se puede adjuntar recibo debido a una conexión con su banco que ${email} necesita arreglar` + : isAdmin && !isTransactionOlderThan7Days + ? `Pídele a ${member} que marque la transacción como efectivo o espere 7 días e intente de nuevo` + : !isTransactionOlderThan7Days + ? `Esperando adjuntar automáticamente con transacción de tarjeta de crédito` + : ``, + smartscanFailed: 'No se pudo escanear el recibo. Introduce los datos manualmente', + someTagLevelsRequired: 'Falta etiqueta', + tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams) => `Le etiqueta ${tagName} ya no es válida`, + taxAmountChanged: 'El importe del impuesto fue modificado', + taxOutOfPolicy: ({taxName}: ViolationsTaxOutOfPolicyParams) => `${taxName} ya no es válido`, + taxRateChanged: 'La tasa de impuesto fue modificada', + taxRequired: 'Falta tasa de impuesto', }, } satisfies EnglishTranslation; From ab967fcc872d91af483a827deb88dd7c88103cd9 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Fri, 8 Dec 2023 12:52:44 -0500 Subject: [PATCH 035/130] feat(Violations): sort types alphabetically --- src/languages/types.ts | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/languages/types.ts b/src/languages/types.ts index c2a5e55bce25..af4517c60847 100644 --- a/src/languages/types.ts +++ b/src/languages/types.ts @@ -278,20 +278,16 @@ type TranslationFlatObject = { }; export type { - TranslationBase, AddressLineParams, AlreadySignedInParams, AmountEachParams, - ViolationsAutoReportedRejectedExpenseParams, BeginningOfChatHistoryAdminRoomPartOneParams, BeginningOfChatHistoryAnnounceRoomPartOneParams, BeginningOfChatHistoryAnnounceRoomPartTwo, BeginningOfChatHistoryDomainRoomPartOneParams, CanceledRequestParams, - ViolationsCashExpenseWithNoReceiptParams, CharacterLimitParams, ConfirmThatParams, - ViolationsConversionSurchargeParams, DateShouldBeAfterParams, DateShouldBeBeforeParams, DeleteActionParams, @@ -305,13 +301,10 @@ export type { GoToRoomParams, IncorrectZipFormatParams, InstantSummaryParams, - ViolationsInvoiceMarkupParams, LocalTimeParams, LoggedInAsParams, ManagerApprovedParams, - ViolationsMaxAgeParams, MaxParticipantsReachedParams, - ViolationsMissingTagParams, NewFaceEnterMagicCodeParams, NoLongerHaveAccessParams, NotAllowedExtensionParams, @@ -319,9 +312,6 @@ export type { OOOEventSummaryFullDayParams, OOOEventSummaryPartialDayParams, OurEmailProviderParams, - ViolationsOverAutoApprovalLimitParams, - ViolationsOverCategoryLimitParams, - ViolationsOverLimitParams, PaidElsewhereWithAmountParams, PaidWithExpensifyWithAmountParams, ParentNavigationSummaryParams, @@ -330,8 +320,6 @@ export type { PayerPaidAmountParams, PayerPaidParams, PayerSettledParams, - ViolationsPerDayLimitParams, - ViolationsReceiptRequiredParams, RemovedTheRequestParams, RenamedRoomActionParams, ReportArchiveReasonsClosedParams, @@ -344,32 +332,44 @@ export type { ResolutionConstraintsParams, RoomNameReservedErrorParams, RoomRenamedToParams, - ViolationsRterParams, SetTheDistanceParams, SetTheRequestParams, - SettledAfterAddedBankAccountParams, SettleExpensifyCardParams, + SettledAfterAddedBankAccountParams, SizeExceededParams, SplitAmountParams, StepCounterParams, - ViolationsTagOutOfPolicyParams, TagSelectionParams, - ViolationsTaxOutOfPolicyParams, ThreadRequestReportNameParams, ThreadSentMoneyReportNameParams, ToValidateLoginParams, TransferParams, + TranslationBase, TranslationFlatObject, TranslationPaths, UntilTimeParams, UpdatedTheDistanceParams, UpdatedTheRequestParams, UserIsAlreadyMemberParams, + ViolationsAutoReportedRejectedExpenseParams, + ViolationsCashExpenseWithNoReceiptParams, + ViolationsConversionSurchargeParams, + ViolationsInvoiceMarkupParams, + ViolationsMaxAgeParams, + ViolationsMissingTagParams, + ViolationsOverAutoApprovalLimitParams, + ViolationsOverCategoryLimitParams, + ViolationsOverLimitParams, + ViolationsPerDayLimitParams, + ViolationsReceiptRequiredParams, + ViolationsRterParams, + ViolationsTagOutOfPolicyParams, + ViolationsTaxOutOfPolicyParams, WaitingOnBankAccountParams, WalletProgramParams, + WeSentYouMagicSignInLinkParams, WelcomeEnterMagicCodeParams, WelcomeNoteParams, WelcomeToRoomParams, - WeSentYouMagicSignInLinkParams, ZipCodeExampleFormatParams, }; From d16e843e323a1ba8b48b2ecabd5563ef9cecc172 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 11 Dec 2023 15:31:20 -0500 Subject: [PATCH 036/130] feat(Violations): add variables where appropriate and update translations --- src/components/FieldViolationMessages.tsx | 13 ++- src/languages/en.ts | 17 ++-- src/languages/es.ts | 31 +++--- src/languages/types.ts | 12 +-- src/libs/Violations/ViolationsUtils.ts | 110 ++++++++++++++++++++++ src/types/onyx/TransactionViolation.ts | 20 +++- 6 files changed, 172 insertions(+), 31 deletions(-) diff --git a/src/components/FieldViolationMessages.tsx b/src/components/FieldViolationMessages.tsx index e82995242ed2..3fba13d514b8 100644 --- a/src/components/FieldViolationMessages.tsx +++ b/src/components/FieldViolationMessages.tsx @@ -1,19 +1,24 @@ -import React from 'react'; +import React, {useMemo} from 'react'; import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; +import ViolationsUtils from '@libs/Violations/ViolationsUtils'; import useThemeStyles from '@styles/useThemeStyles'; import {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; export default function FieldViolationMessages({violations}: {violations: TransactionViolation[]}) { - const {translate} = useLocalize(); const styles = useThemeStyles(); + const localize = useLocalize(); + const translate = localize.translate; + + const violationMessages = useMemo(() => violations.map((violation) => [violation.name, ViolationsUtils.getViolationTranslation(violation, translate)]), [translate, violations]); + return ( <> - {violations.map(({name}) => ( + {violationMessages.map(([name, message]) => ( - {translate(`violations.${name}`)} + {message} ))} diff --git a/src/languages/en.ts b/src/languages/en.ts index ae2949cf3437..a5330cc1e062 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2002,7 +2002,7 @@ export default { }, violations: { allTagLevelsRequired: 'All tags required', - autoReportedRejectedExpense: ({rejectedBy, rejectReason}: ViolationsAutoReportedRejectedExpenseParams) => `${rejectedBy} rejected this expense with the comment "${rejectReason}"`, + autoReportedRejectedExpense: ({rejectReason, rejectedBy}: ViolationsAutoReportedRejectedExpenseParams) => `${rejectedBy} rejected this expense with the comment "${rejectReason}"`, billableExpense: 'Billable no longer valid', cashExpenseWithNoReceipt: ({amount}: ViolationsCashExpenseWithNoReceiptParams) => `Receipt required over ${amount}`, categoryOutOfPolicy: 'Category no longer valid', @@ -2012,10 +2012,10 @@ export default { fieldRequired: 'Report fields are required', futureDate: 'Future date not allowed', invoiceMarkup: ({invoiceMarkup}: ViolationsInvoiceMarkupParams) => `Marked up by ${invoiceMarkup}%`, - maxAge: ({workspaceMaxExpenseAge}: ViolationsMaxAgeParams) => `Date older than ${workspaceMaxExpenseAge} days`, + maxAge: ({maxAge}: ViolationsMaxAgeParams) => `Date older than ${maxAge} days`, missingCategory: 'Missing category', missingComment: 'Missing comment', - missingTag: ({tagName}: ViolationsMissingTagParams) => `Missing ${tagName}`, + missingTag: ({tagName}: ViolationsMissingTagParams) => `Missing ${tagName ?? 'tag'}`, modifiedAmount: 'Amount greater than scanned receipt', modifiedDate: 'Date differs from scanned receipt', nonExpensiworksExpense: 'Non-Expensiworks expense', @@ -2026,7 +2026,7 @@ export default { perDayLimit: ({limit}: ViolationsPerDayLimitParams) => `Amount over daily ${limit}/person category limit`, receiptNotSmartScanned: 'Receipt not verified. Please confirm accuracy.', receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Receipt required over ${amount} ${category ? ' category limit' : ''}`, - rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { + rter: ({brokenBankConnection, email, isAdmin, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { if (brokenBankConnection && isAdmin) { return "Can't auto-match receipt due to broken bank connection which you need to fix"; } @@ -2036,17 +2036,16 @@ export default { if (isAdmin && !isTransactionOlderThan7Days) { return `Ask ${member} to mark as a cash or wait 7 days and try again`; } - if (!isTransactionOlderThan7Days) { - return `Awaiting merge with card transaction.`; + return 'Awaiting merge with card transaction.'; } - return ``; + return ''; }, smartscanFailed: 'Receipt scanning failed. Enter details manually.', someTagLevelsRequired: 'Missing tag', - tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams) => `${tagName} no longer valid`, + tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams) => `${tagName ?? ''} no longer valid`, taxAmountChanged: 'Tax amount was modified', - taxOutOfPolicy: ({taxName}: ViolationsTaxOutOfPolicyParams) => `${taxName} no longer valid`, + taxOutOfPolicy: ({taxName}: ViolationsTaxOutOfPolicyParams) => `${taxName ?? ''} no longer valid`, taxRateChanged: 'Tax rate was modified', taxRequired: 'Missing tax rate', }, diff --git a/src/languages/es.ts b/src/languages/es.ts index 0b75953b1c6a..8a64e5130642 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2497,7 +2497,7 @@ export default { fieldRequired: 'Los campos del informe son obligatorios', futureDate: 'Fecha futura no permitida', invoiceMarkup: ({invoiceMarkup}: ViolationsInvoiceMarkupParams) => `Incrementado un ${invoiceMarkup}%`, - maxAge: ({workspaceMaxExpenseAge}: ViolationsMaxAgeParams) => `Fecha de más de ${workspaceMaxExpenseAge} días`, + maxAge: ({maxAge}: ViolationsMaxAgeParams) => `Fecha de más de ${maxAge} días`, missingCategory: 'Falta categoría', missingComment: 'Falta comentario', missingTag: ({tagName}: ViolationsMissingTagParams) => `Falta ${tagName}`, @@ -2511,16 +2511,25 @@ export default { perDayLimit: ({limit}: ViolationsPerDayLimitParams) => `Importe supera el límite diario de la categoría de ${limit}/persona`, receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma su exactitud', receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Recibo obligatorio para importes sobre ${amount} ${category ? ' el limite de la categoría de' : ''}`, - rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => - brokenBankConnection && isAdmin - ? `No se puede adjuntar recibo debido a una conexión con su banco que necesita arreglar` - : brokenBankConnection - ? `No se puede adjuntar recibo debido a una conexión con su banco que ${email} necesita arreglar` - : isAdmin && !isTransactionOlderThan7Days - ? `Pídele a ${member} que marque la transacción como efectivo o espere 7 días e intente de nuevo` - : !isTransactionOlderThan7Days - ? `Esperando adjuntar automáticamente con transacción de tarjeta de crédito` - : ``, + rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { + if (brokenBankConnection && isAdmin) { + return `No se puede adjuntar recibo debido a una conexión con su banco que necesita arreglar`; + } + + if (brokenBankConnection) { + return `No se puede adjuntar recibo debido a una conexión con su banco que ${email} necesita arreglar`; + } + + if (isAdmin && !isTransactionOlderThan7Days) { + return `Pídele a ${member} que marque la transacción como efectivo o espere 7 días e intente de nuevo`; + } + + if (!isTransactionOlderThan7Days) { + return `Esperando adjuntar automáticamente con transacción de tarjeta de crédito`; + } + + return ``; + }, smartscanFailed: 'No se pudo escanear el recibo. Introduce los datos manualmente', someTagLevelsRequired: 'Falta etiqueta', tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams) => `Le etiqueta ${tagName} ya no es válida`, diff --git a/src/languages/types.ts b/src/languages/types.ts index af4517c60847..e5e13119b87e 100644 --- a/src/languages/types.ts +++ b/src/languages/types.ts @@ -209,13 +209,13 @@ type ViolationsAutoReportedRejectedExpenseParams = {rejectedBy: string; rejectRe type ViolationsCashExpenseWithNoReceiptParams = {amount: string}; -type ViolationsConversionSurchargeParams = {surcharge: number}; +type ViolationsConversionSurchargeParams = {surcharge?: number}; -type ViolationsInvoiceMarkupParams = {invoiceMarkup: number}; +type ViolationsInvoiceMarkupParams = {invoiceMarkup?: number}; -type ViolationsMaxAgeParams = {workspaceMaxExpenseAge: number}; +type ViolationsMaxAgeParams = {maxAge: number}; -type ViolationsMissingTagParams = {tagName: string}; +type ViolationsMissingTagParams = {tagName?: string}; type ViolationsOverAutoApprovalLimitParams = {formattedLimitAmount: string}; @@ -235,9 +235,9 @@ type ViolationsRterParams = { member?: string; }; -type ViolationsTagOutOfPolicyParams = {tagName: string}; +type ViolationsTagOutOfPolicyParams = {tagName?: string}; -type ViolationsTaxOutOfPolicyParams = {taxName: string}; +type ViolationsTaxOutOfPolicyParams = {taxName?: string}; /* Translation Object types */ // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 4cfa259c9e78..afb80c9efa7e 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -1,5 +1,7 @@ import reject from 'lodash/reject'; import Onyx from 'react-native-onyx'; +import {Phrase, PhraseParameters} from '@libs/Localize'; +import {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; @@ -80,6 +82,114 @@ const ViolationsUtils = { value: newTransactionViolations, }; }, + /** + * Gets the translated message for each violation type. Necessary because `translate` throws a type error if you + * attempt to pass it template strings, or any kind of string literal union that contains both function and string + * members. + * + * The issue is with the type of {@link PhraseParameters} which is defined as + * `type PhraseParameters = T extends (...args: infer A) => string ? A : never[];` + * + * When a union type is passed that _may_ include a key that returns a `string` or a key that contains a + * `function`, the type returns `never`. + * + * If you have only switch cases with params, and use a default case to catch the strings, it will throw an error. + * + * @param violation + * @param translate + */ + getViolationTranslation(violation: TransactionViolation, translate: (phraseKey: TKey, ...phraseParameters: PhraseParameters>) => string) { + switch (violation.name) { + case 'missingCategory': + return translate('violations.missingCategory'); + case 'fieldRequired': + return translate('violations.fieldRequired'); + case 'tagOutOfPolicy': + return translate('violations.tagOutOfPolicy', {tagName: violation.data?.tagName}); + case 'missingTag': + return translate('violations.missingTag', {tagName: violation.data?.tagName}); + case 'rter': + return translate('violations.rter', { + brokenBankConnection: Boolean(violation.data?.brokenBankConnection), + isAdmin: Boolean(violation.data?.isAdmin), + email: violation.data?.email, + isTransactionOlderThan7Days: Boolean(violation.data?.isTransactionOlderThan7Days), + member: violation.data?.member, + }); + case 'maxAge': + return translate('violations.maxAge', {maxAge: violation.data?.maxAge ?? 0}); + case 'taxOutOfPolicy': + return translate('violations.taxOutOfPolicy', {taxName: violation.data?.taxName}); + case 'billableExpense': + return translate('violations.billableExpense'); + case 'futureDate': + return translate('violations.futureDate'); + case 'modifiedAmount': + return translate('violations.modifiedAmount'); + case 'conversionSurcharge': + return translate('violations.conversionSurcharge', {surcharge: violation.data?.surcharge}); + case 'invoiceMarkup': + return translate('violations.invoiceMarkup', {invoiceMarkup: violation.data?.invoiceMarkup}); + case 'autoReportedRejectedExpense': + return translate('violations.autoReportedRejectedExpense', { + rejectedBy: violation.data?.rejectedBy ?? '', + rejectReason: violation.data?.rejectReason ?? '', + }); + case 'missingComment': + return translate('violations.missingComment'); + case 'taxRequired': + return translate('violations.taxRequired'); + case 'smartscanFailed': + return translate('violations.smartscanFailed'); + case 'taxAmountChanged': + return translate('violations.taxAmountChanged'); + case 'receiptRequired': + return translate('violations.receiptRequired', { + amount: violation.data?.amount ?? '0', + category: violation.data?.category ?? '', + }); + case 'cashExpenseWithNoReceipt': + return translate('violations.cashExpenseWithNoReceipt', {amount: violation.data?.amount ?? ''}); + case 'categoryOutOfPolicy': + return translate('violations.categoryOutOfPolicy'); + case 'modifiedDate': + return translate('violations.modifiedDate'); + case 'taxRateChanged': + return translate('violations.taxRateChanged'); + case 'customUnitOutOfPolicy': + return translate('violations.customUnitOutOfPolicy'); + case 'overLimit': + return translate('violations.overLimit', {amount: violation.data?.amount ?? ''}); + case 'overLimitAttendee': + return translate('violations.overLimitAttendee', {amount: violation.data?.amount ?? ''}); + case 'receiptNotSmartScanned': + return translate('violations.receiptNotSmartScanned'); + case 'allTagLevelsRequired': + return translate('violations.allTagLevelsRequired'); + case 'nonExpensiworksExpense': + return translate('violations.nonExpensiworksExpense'); + case 'overAutoApprovalLimit': + return translate('violations.overAutoApprovalLimit', {formattedLimitAmount: violation.data?.formattedLimitAmount ?? ''}); + case 'duplicatedTransaction': + return translate('violations.duplicatedTransaction'); + case 'someTagLevelsRequired': + return translate('violations.someTagLevelsRequired'); + case 'overCategoryLimit': + return translate('violations.overCategoryLimit', {categoryLimit: violation.data?.categoryLimit ?? ''}); + case 'perDayLimit': + return translate('violations.perDayLimit', {limit: violation.data?.limit ?? ''}); + default: + // The interpreter should never get here because the switch cases should be exhaustive. + // + // If typescript is showing an error on the assertion below it means the switch statement is out of + // sync with the `ViolationNames` type, and one or the other needs to be updated. + // + // The 'unnecessary' type assertion below is the guarantee of type safety for these translations. + // + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + return violation.name as never; + } + }, }; export default ViolationsUtils; diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 9681dd38be14..283ad1dda67a 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -9,7 +9,25 @@ type TransactionViolation = { type: string; name: ViolationName; userMessage: string; - data?: Record; + data?: { + rejectedBy?: string; + rejectReason?: string; + amount?: string; + surcharge?: number; + invoiceMarkup?: number; + maxAge?: number; + tagName?: string; + formattedLimitAmount?: string; + categoryLimit?: string; + limit?: string; + category?: string; + brokenBankConnection?: boolean; + isAdmin?: boolean; + email?: string; + isTransactionOlderThan7Days?: boolean; + member?: string; + taxName?: string; + }; }; export type {TransactionViolation, ViolationName}; From 80f205df0e2b2a754dcd3fbe35aba137cd426651 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Mon, 11 Dec 2023 15:44:20 -0500 Subject: [PATCH 037/130] feat(Violations): add variables where appropriate and update translations --- src/libs/Violations/ViolationsUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index afb80c9efa7e..2aa431617675 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -84,7 +84,7 @@ const ViolationsUtils = { }, /** * Gets the translated message for each violation type. Necessary because `translate` throws a type error if you - * attempt to pass it template strings, or any kind of string literal union that contains both function and string + * attempt to pass it template strings, or members of a string literal union that contains both function and string * members. * * The issue is with the type of {@link PhraseParameters} which is defined as From ea7e89aaf920221fd1724ec3279d2ebf913716a3 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 12 Dec 2023 13:14:27 +0700 Subject: [PATCH 038/130] add selected category first --- src/libs/OptionsListUtils.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 95a8c52649d3..8ff45bc1761e 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -846,28 +846,30 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt return categorySections; } - if (numberOfCategories < CONST.CATEGORY_LIST_THRESHOLD) { + if (!_.isEmpty(selectedOptions)) { categorySections.push({ - // "All" section when items amount less than the threshold + // "Selected" section title: '', - shouldShow: false, + shouldShow: true, indexOffset, - data: getIndentedOptionTree(enabledCategories), + data: getIndentedOptionTree(selectedOptions, true), }); - return categorySections; + indexOffset += selectedOptions.length; } - if (!_.isEmpty(selectedOptions)) { + const categoryListThreshold = !_.isEmpty(selectedOptions) ? CONST.CATEGORY_LIST_THRESHOLD - 1 : CONST.CATEGORY_LIST_THRESHOLD; + + if (numberOfCategories < categoryListThreshold) { categorySections.push({ - // "Selected" section + // "All" section when items amount less than the threshold title: '', - shouldShow: true, + shouldShow: false, indexOffset, - data: getIndentedOptionTree(selectedOptions, true), + data: getIndentedOptionTree(enabledCategories), }); - indexOffset += selectedOptions.length; + return categorySections; } const selectedOptionNames = _.map(selectedOptions, (selectedOption) => selectedOption.name); From a9bf6d6cde5f53aa5467a59e6786d15ed4303aec Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 12 Dec 2023 13:32:16 +0700 Subject: [PATCH 039/130] add selected category once --- src/libs/OptionsListUtils.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 8ff45bc1761e..c35d07d2e4d6 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -859,6 +859,8 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt } const categoryListThreshold = !_.isEmpty(selectedOptions) ? CONST.CATEGORY_LIST_THRESHOLD - 1 : CONST.CATEGORY_LIST_THRESHOLD; + const selectedOptionNames = _.map(selectedOptions, (selectedOption) => selectedOption.name); + const filteredCategories = _.filter(enabledCategories, (category) => !_.includes(selectedOptionNames, category.name)); if (numberOfCategories < categoryListThreshold) { categorySections.push({ @@ -866,13 +868,12 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt title: '', shouldShow: false, indexOffset, - data: getIndentedOptionTree(enabledCategories), + data: getIndentedOptionTree(filteredCategories), }); return categorySections; } - const selectedOptionNames = _.map(selectedOptions, (selectedOption) => selectedOption.name); const filteredRecentlyUsedCategories = _.chain(recentlyUsedCategories) .filter((categoryName) => !_.includes(selectedOptionNames, categoryName) && lodashGet(categories, [categoryName, 'enabled'], false)) .map((categoryName) => ({ @@ -895,7 +896,6 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt indexOffset += filteredRecentlyUsedCategories.length; } - const filteredCategories = _.filter(enabledCategories, (category) => !_.includes(selectedOptionNames, category.name)); categorySections.push({ // "All" section when items amount more than the threshold From 61a83f445de2f55e748294e7844440fb27034246 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 12 Dec 2023 13:40:07 +0700 Subject: [PATCH 040/130] fix lint --- src/libs/OptionsListUtils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index c35d07d2e4d6..93730583c2f1 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -896,7 +896,6 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt indexOffset += filteredRecentlyUsedCategories.length; } - categorySections.push({ // "All" section when items amount more than the threshold title: Localize.translateLocal('common.all'), From 4277baf344574bde19a872f82adda084edc6d12b Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 11:43:40 -0500 Subject: [PATCH 041/130] feat(Violations): move transaction violations --- src/ONYXKEYS.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 509eeeb05316..f9bc5e0b9be8 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -270,11 +270,11 @@ const ONYXKEYS = { REPORT_USER_IS_TYPING: 'reportUserIsTyping_', REPORT_USER_IS_LEAVING_ROOM: 'reportUserIsLeavingRoom_', SECURITY_GROUP: 'securityGroup_', - TRANSACTION: 'transactions_', + TRANSACTION_VIOLATIONS: 'transactionViolations_', // Holds temporary transactions used during the creation and edit flow + TRANSACTION: 'transactions_', TRANSACTION_DRAFT: 'transactionsDraft_', - TRANSACTION_VIOLATIONS: 'transactionViolations_', SPLIT_TRANSACTION_DRAFT: 'splitTransactionDraft_', PRIVATE_NOTES_DRAFT: 'privateNotesDraft_', NEXT_STEP: 'reportNextStep_', From 4636e08454d02b686f373c29494e5d26d6943b52 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 11:50:06 -0500 Subject: [PATCH 042/130] feat(Violations): rename FieldViolationMessages to ViolationMessages --- .../ReportActionItem/MoneyRequestView.js | 18 +++++++++--------- ...ationMessages.tsx => ViolationMessages.tsx} | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) rename src/components/{FieldViolationMessages.tsx => ViolationMessages.tsx} (89%) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 2bc9bb366308..9fa0121fc60e 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -5,7 +5,6 @@ import React, {useCallback, useMemo} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import categoryPropTypes from '@components/categoryPropTypes'; -import FieldViolationMessages from '@components/FieldViolationMessages'; import * as Expensicons from '@components/Icon/Expensicons'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; @@ -15,6 +14,7 @@ import Switch from '@components/Switch'; import tagPropTypes from '@components/tagPropTypes'; import Text from '@components/Text'; import transactionPropTypes from '@components/transactionPropTypes'; +import ViolationMessages from '@components/ViolationMessages'; import withCurrentUserPersonalDetails, {withCurrentUserPersonalDetailsPropTypes} from '@components/withCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import usePermissions from '@hooks/usePermissions'; @@ -206,7 +206,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.RECEIPT))} /> )} - {canUseViolations && } + {canUseViolations && } - {canUseViolations && } + {canUseViolations && } - {canUseViolations && } + {canUseViolations && } {isDistanceRequest ? ( @@ -260,7 +260,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate brickRoadIndicator={hasViolations('merchant') || (hasErrors && isEmptyMerchant) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && isEmptyMerchant ? translate('common.error.enterMerchant') : ''} /> - {canUseViolations && } + {canUseViolations && } )} @@ -274,7 +274,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate brickRoadIndicator={hasViolations('date') || (hasErrors && transactionDate === '') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} error={hasErrors && transactionDate === '' ? translate('common.error.enterDate') : ''} /> - {canUseViolations && } + {canUseViolations && } {shouldShowCategory && ( @@ -287,7 +287,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.CATEGORY))} brickRoadIndicator={hasViolations('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - {canUseViolations && } + {canUseViolations && } )} {shouldShowTag && ( @@ -301,7 +301,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate onPress={() => Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} brickRoadIndicator={hasViolations('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} /> - {canUseViolations && } + {canUseViolations && } )} {isCardTransaction && ( @@ -323,7 +323,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate onToggle={(value) => IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} /> - {canUseViolations && } + {canUseViolations && } )} diff --git a/src/components/FieldViolationMessages.tsx b/src/components/ViolationMessages.tsx similarity index 89% rename from src/components/FieldViolationMessages.tsx rename to src/components/ViolationMessages.tsx index 3fba13d514b8..b40617e49357 100644 --- a/src/components/FieldViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -6,7 +6,7 @@ import useThemeStyles from '@styles/useThemeStyles'; import {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; -export default function FieldViolationMessages({violations}: {violations: TransactionViolation[]}) { +export default function ViolationMessages({violations}: {violations: TransactionViolation[]}) { const styles = useThemeStyles(); const localize = useLocalize(); From dee57aa4927d68d2de2e33f2c392bf6565e2df3e Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 11:51:26 -0500 Subject: [PATCH 043/130] feat(Violations): clean up variable declarations --- src/components/ViolationMessages.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/ViolationMessages.tsx b/src/components/ViolationMessages.tsx index b40617e49357..a53272904540 100644 --- a/src/components/ViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -8,10 +8,7 @@ import Text from './Text'; export default function ViolationMessages({violations}: {violations: TransactionViolation[]}) { const styles = useThemeStyles(); - - const localize = useLocalize(); - const translate = localize.translate; - + const {translate} = useLocalize(); const violationMessages = useMemo(() => violations.map((violation) => [violation.name, ViolationsUtils.getViolationTranslation(violation, translate)]), [translate, violations]); return ( From 7220f923a0ab6670bd316c1aa8f9ade9885e6d73 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 12:16:13 -0500 Subject: [PATCH 044/130] feat(Violations): remove documentation --- src/hooks/useViolations.ts | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index f40807cf98b1..a8634b17c06e 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -47,12 +47,6 @@ const violationFields: Record = { type ViolationsMap = Map; -/** - * Hook to access violations for a transaction. Returns `getViolationsForField()` - * @example const {getViolationsForField} = useViolations(transactionViolations); - * @param violations - Array of {@link TransactionViolation}s - * @returns - Object with `getViolationsForField()` callback - */ function useViolations(violations: TransactionViolation[]) { const violationsByField = useMemo((): ViolationsMap => { const violationGroups = new Map(); @@ -66,14 +60,6 @@ function useViolations(violations: TransactionViolation[]) { return violationGroups ?? new Map(); }, [violations]); - /** - * Callback that filters the list of {@link TransactionViolation}s provided to the hook, - * and returns only those that apply to the given {@link ViolationField}. - * (return value memoized to prevent re-renders) - * @example const violations = getViolationsForField('amount'); - * @param field - ViolationField to get violations for (e.g. 'amount', 'billable', 'category', - * etc.) - */ const getViolationsForField = useCallback((field: ViolationField) => violationsByField.get(field) ?? [], [violationsByField]); return { From 0f97e979c25b00c9753fefcb904e73021078cfec Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 12:31:32 -0500 Subject: [PATCH 045/130] feat(Violations): fix inverted conditional in rter, and simplify. fix es translation of receipt required --- src/languages/en.ts | 14 ++++++-------- src/languages/es.ts | 20 +++++++------------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 838476b9a756..d8f935fa3897 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2030,18 +2030,16 @@ export default { receiptNotSmartScanned: 'Receipt not verified. Please confirm accuracy.', receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Receipt required over ${amount} ${category ? ' category limit' : ''}`, rter: ({brokenBankConnection, email, isAdmin, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { - if (brokenBankConnection && isAdmin) { - return "Can't auto-match receipt due to broken bank connection which you need to fix"; - } if (brokenBankConnection) { - return `Can't auto-match receipt due to broken bank connection which ${email} needs to fix`; - } - if (isAdmin && !isTransactionOlderThan7Days) { - return `Ask ${member} to mark as a cash or wait 7 days and try again`; + return isAdmin + ? `Can't auto-match receipt due to broken bank connection which ${email} needs to fix` + : "Can't auto-match receipt due to broken bank connection which you need to fix"; } + if (!isTransactionOlderThan7Days) { - return 'Awaiting merge with card transaction.'; + return isAdmin ? `Ask ${member} to mark as a cash or wait 7 days and try again` : 'Awaiting merge with card transaction.'; } + return ''; }, smartscanFailed: 'Receipt scanning failed. Enter details manually.', diff --git a/src/languages/es.ts b/src/languages/es.ts index 057b1e687c19..b12c13a73427 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2513,24 +2513,18 @@ export default { overLimitAttendee: ({amount}: ViolationsOverLimitParams) => `Importe supera el límite de ${amount}/persona`, perDayLimit: ({limit}: ViolationsPerDayLimitParams) => `Importe supera el límite diario de la categoría de ${limit}/persona`, receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma su exactitud', - receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Recibo obligatorio para importes sobre ${amount} ${category ? ' el limite de la categoría de' : ''}`, + receiptRequired: ({amount, category}: ViolationsReceiptRequiredParams) => `Recibo obligatorio para importes sobre ${category ? 'el limite de la categoría de ' : ''}${amount}`, rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { - if (brokenBankConnection && isAdmin) { - return `No se puede adjuntar recibo debido a una conexión con su banco que necesita arreglar`; - } - if (brokenBankConnection) { - return `No se puede adjuntar recibo debido a una conexión con su banco que ${email} necesita arreglar`; - } - - if (isAdmin && !isTransactionOlderThan7Days) { - return `Pídele a ${member} que marque la transacción como efectivo o espere 7 días e intente de nuevo`; + return isAdmin + ? `No se puede adjuntar recibo debido a una conexión con su banco que ${email} necesita arreglar` + : `No se puede adjuntar recibo debido a una conexión con su banco que necesita arreglar`; } - if (!isTransactionOlderThan7Days) { - return `Esperando adjuntar automáticamente con transacción de tarjeta de crédito`; + return isAdmin + ? `Pídele a ${member} que marque la transacción como efectivo o espere 7 días e intente de nuevo` + : `Esperando adjuntar automáticamente con transacción de tarjeta de crédito`; } - return ``; }, smartscanFailed: 'No se pudo escanear el recibo. Introduce los datos manualmente', From b66155859198b06b1c548393395bd485fec6bfc8 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 12:33:22 -0500 Subject: [PATCH 046/130] feat(Violations): fix verb conjugation --- src/languages/es.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index b12c13a73427..81dcac90ae16 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2518,11 +2518,11 @@ export default { if (brokenBankConnection) { return isAdmin ? `No se puede adjuntar recibo debido a una conexión con su banco que ${email} necesita arreglar` - : `No se puede adjuntar recibo debido a una conexión con su banco que necesita arreglar`; + : 'No se puede adjuntar recibo debido a una conexión con su banco que necesitas arreglar'; } if (!isTransactionOlderThan7Days) { return isAdmin - ? `Pídele a ${member} que marque la transacción como efectivo o espere 7 días e intente de nuevo` + ? `Pídele a ${member} que marque la transacción como efectivo o espera 7 días e intenta de nuevo` : `Esperando adjuntar automáticamente con transacción de tarjeta de crédito`; } return ``; From b620aa68be9b0f2f4431006cd62ed5917f9bf443 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 12:35:00 -0500 Subject: [PATCH 047/130] feat(Violations): fix translation --- src/languages/es.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index 81dcac90ae16..ffb3f2fc7cde 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2523,7 +2523,7 @@ export default { if (!isTransactionOlderThan7Days) { return isAdmin ? `Pídele a ${member} que marque la transacción como efectivo o espera 7 días e intenta de nuevo` - : `Esperando adjuntar automáticamente con transacción de tarjeta de crédito`; + : 'Esperando adjuntar automáticamente a transacción de tarjeta de crédito'; } return ``; }, From f4376a2f68c9c4f4b2629abe560fbac6a64564ab Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 12:36:53 -0500 Subject: [PATCH 048/130] feat(Violations): return string not template --- src/languages/es.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index ffb3f2fc7cde..af1ac3dd91b2 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2525,7 +2525,7 @@ export default { ? `Pídele a ${member} que marque la transacción como efectivo o espera 7 días e intenta de nuevo` : 'Esperando adjuntar automáticamente a transacción de tarjeta de crédito'; } - return ``; + return ''; }, smartscanFailed: 'No se pudo escanear el recibo. Introduce los datos manualmente', someTagLevelsRequired: 'Falta etiqueta', From 319c09e7aeed87b718275ba277ebb516793d4391 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 12:53:54 -0500 Subject: [PATCH 049/130] feat(Violations): add example --- src/libs/Violations/ViolationsUtils.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 2aa431617675..5792d597a44f 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -90,9 +90,29 @@ const ViolationsUtils = { * The issue is with the type of {@link PhraseParameters} which is defined as * `type PhraseParameters = T extends (...args: infer A) => string ? A : never[];` * - * When a union type is passed that _may_ include a key that returns a `string` or a key that contains a - * `function`, the type returns `never`. + * When a templated key is passed that _may_ include a translation key that resolves to a `string` but could also + * include a translation key that resolves to a `function`, the type returns `never`. * + * For instance: + * `translate('violations.missingCategory')` resolves to the string 'Missing category', + * `translate('violations.overLimit') resolves to the function `({amount}: ViolationsOverLimitParams) => `Amount + * over ${amount}/person limit`, + * + * So then: + * ``` + * const missingCategory = {key: 'missingCategory' as ViolationName , params:undefined}; + * const overLimit = {key: }'overLimit' as ViolationName, params: {amount: 1}; + * + * //this works fine + * const missingCategoryTranslation = translate(`violations.${missingCategory.key}`) + * // this too + * const overLimitsTranslation = translate(`violations.${overLimit.key}`, overLimit.params) + * + * // but this will throw an error on the params arg because the type checker can't sufficiently resolve the type. + * [missingCategory, overLimit].map({key, params}}=>params ? translate(`violations.${key}`, params) : + * translate(`violations.$key}`) + * + * ``` * If you have only switch cases with params, and use a default case to catch the strings, it will throw an error. * * @param violation From a032ed237f1393e0aadfbd6f6d0b9589f193aebb Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 15:49:11 -0500 Subject: [PATCH 050/130] feat(Violations): fix comments, alphabetize cases --- src/libs/Violations/ViolationsUtils.ts | 158 ++++++++++++------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index 5792d597a44f..553fcc942068 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -83,129 +83,129 @@ const ViolationsUtils = { }; }, /** - * Gets the translated message for each violation type. Necessary because `translate` throws a type error if you - * attempt to pass it template strings, or members of a string literal union that contains both function and string - * members. + * Gets the translated message for each violation type. + * + * Necessary because `translate` throws a type error if you attempt to pass it a template strings, when the + * possible values could be either translation keys that resolve to strings or translation keys that resolve to + * functions. * * The issue is with the type of {@link PhraseParameters} which is defined as * `type PhraseParameters = T extends (...args: infer A) => string ? A : never[];` * - * When a templated key is passed that _may_ include a translation key that resolves to a `string` but could also - * include a translation key that resolves to a `function`, the type returns `never`. + * This says that if T is a function from some args to a string, then T is the type of the arguments. If T is + * anything else, then T should not be assigned a value. + * + * When a templated key is passed whose final value could be either, the type checker pessimistically assigns it + * never. There seems to be some block somewhere in the type system that prevents it from fully resolving it. * * For instance: * `translate('violations.missingCategory')` resolves to the string 'Missing category', * `translate('violations.overLimit') resolves to the function `({amount}: ViolationsOverLimitParams) => `Amount * over ${amount}/person limit`, * - * So then: + * But for some reason, typescript can't correctly infer the types when there is a union of multiple strings: * ``` * const missingCategory = {key: 'missingCategory' as ViolationName , params:undefined}; * const overLimit = {key: }'overLimit' as ViolationName, params: {amount: 1}; * - * //this works fine + * //this works fine: * const missingCategoryTranslation = translate(`violations.${missingCategory.key}`) * // this too * const overLimitsTranslation = translate(`violations.${overLimit.key}`, overLimit.params) * * // but this will throw an error on the params arg because the type checker can't sufficiently resolve the type. - * [missingCategory, overLimit].map({key, params}}=>params ? translate(`violations.${key}`, params) : - * translate(`violations.$key}`) - * + * // Even though the type _should_ be sufficiently narrowed by the time it gets there. + * [missingCategory, overLimit].map({key, params}} => params + * ? translate(`violations.${key}`, params) + * : translate(`violations.$key}`) * ``` - * If you have only switch cases with params, and use a default case to catch the strings, it will throw an error. - * - * @param violation - * @param translate - */ - getViolationTranslation(violation: TransactionViolation, translate: (phraseKey: TKey, ...phraseParameters: PhraseParameters>) => string) { + */ getViolationTranslation( + violation: TransactionViolation, + translate: (phraseKey: TKey, ...phraseParameters: PhraseParameters>) => string, + ): string { switch (violation.name) { - case 'missingCategory': - return translate('violations.missingCategory'); - case 'fieldRequired': - return translate('violations.fieldRequired'); - case 'tagOutOfPolicy': - return translate('violations.tagOutOfPolicy', {tagName: violation.data?.tagName}); - case 'missingTag': - return translate('violations.missingTag', {tagName: violation.data?.tagName}); - case 'rter': - return translate('violations.rter', { - brokenBankConnection: Boolean(violation.data?.brokenBankConnection), - isAdmin: Boolean(violation.data?.isAdmin), - email: violation.data?.email, - isTransactionOlderThan7Days: Boolean(violation.data?.isTransactionOlderThan7Days), - member: violation.data?.member, - }); - case 'maxAge': - return translate('violations.maxAge', {maxAge: violation.data?.maxAge ?? 0}); - case 'taxOutOfPolicy': - return translate('violations.taxOutOfPolicy', {taxName: violation.data?.taxName}); - case 'billableExpense': - return translate('violations.billableExpense'); - case 'futureDate': - return translate('violations.futureDate'); - case 'modifiedAmount': - return translate('violations.modifiedAmount'); - case 'conversionSurcharge': - return translate('violations.conversionSurcharge', {surcharge: violation.data?.surcharge}); - case 'invoiceMarkup': - return translate('violations.invoiceMarkup', {invoiceMarkup: violation.data?.invoiceMarkup}); + case 'allTagLevelsRequired': + return translate('violations.allTagLevelsRequired'); case 'autoReportedRejectedExpense': return translate('violations.autoReportedRejectedExpense', { rejectedBy: violation.data?.rejectedBy ?? '', rejectReason: violation.data?.rejectReason ?? '', }); - case 'missingComment': - return translate('violations.missingComment'); - case 'taxRequired': - return translate('violations.taxRequired'); - case 'smartscanFailed': - return translate('violations.smartscanFailed'); - case 'taxAmountChanged': - return translate('violations.taxAmountChanged'); - case 'receiptRequired': - return translate('violations.receiptRequired', { - amount: violation.data?.amount ?? '0', - category: violation.data?.category ?? '', - }); + case 'billableExpense': + return translate('violations.billableExpense'); case 'cashExpenseWithNoReceipt': return translate('violations.cashExpenseWithNoReceipt', {amount: violation.data?.amount ?? ''}); case 'categoryOutOfPolicy': return translate('violations.categoryOutOfPolicy'); - case 'modifiedDate': - return translate('violations.modifiedDate'); - case 'taxRateChanged': - return translate('violations.taxRateChanged'); + case 'conversionSurcharge': + return translate('violations.conversionSurcharge', {surcharge: violation.data?.surcharge}); case 'customUnitOutOfPolicy': return translate('violations.customUnitOutOfPolicy'); - case 'overLimit': - return translate('violations.overLimit', {amount: violation.data?.amount ?? ''}); - case 'overLimitAttendee': - return translate('violations.overLimitAttendee', {amount: violation.data?.amount ?? ''}); - case 'receiptNotSmartScanned': - return translate('violations.receiptNotSmartScanned'); - case 'allTagLevelsRequired': - return translate('violations.allTagLevelsRequired'); + case 'duplicatedTransaction': + return translate('violations.duplicatedTransaction'); + case 'fieldRequired': + return translate('violations.fieldRequired'); + case 'futureDate': + return translate('violations.futureDate'); + case 'invoiceMarkup': + return translate('violations.invoiceMarkup', {invoiceMarkup: violation.data?.invoiceMarkup}); + case 'maxAge': + return translate('violations.maxAge', {maxAge: violation.data?.maxAge ?? 0}); + case 'missingCategory': + return translate('violations.missingCategory'); + case 'missingComment': + return translate('violations.missingComment'); + case 'missingTag': + return translate('violations.missingTag', {tagName: violation.data?.tagName}); + case 'modifiedAmount': + return translate('violations.modifiedAmount'); + case 'modifiedDate': + return translate('violations.modifiedDate'); case 'nonExpensiworksExpense': return translate('violations.nonExpensiworksExpense'); case 'overAutoApprovalLimit': return translate('violations.overAutoApprovalLimit', {formattedLimitAmount: violation.data?.formattedLimitAmount ?? ''}); - case 'duplicatedTransaction': - return translate('violations.duplicatedTransaction'); - case 'someTagLevelsRequired': - return translate('violations.someTagLevelsRequired'); case 'overCategoryLimit': return translate('violations.overCategoryLimit', {categoryLimit: violation.data?.categoryLimit ?? ''}); + case 'overLimit': + return translate('violations.overLimit', {amount: violation.data?.amount ?? ''}); + case 'overLimitAttendee': + return translate('violations.overLimitAttendee', {amount: violation.data?.amount ?? ''}); case 'perDayLimit': return translate('violations.perDayLimit', {limit: violation.data?.limit ?? ''}); + case 'receiptNotSmartScanned': + return translate('violations.receiptNotSmartScanned'); + case 'receiptRequired': + return translate('violations.receiptRequired', { + amount: violation.data?.amount ?? '0', + category: violation.data?.category ?? '', + }); + case 'rter': + return translate('violations.rter', { + brokenBankConnection: violation.data?.brokenBankConnection ?? false, + isAdmin: violation.data?.isAdmin ?? false, + email: violation.data?.email, + isTransactionOlderThan7Days: Boolean(violation.data?.isTransactionOlderThan7Days), + member: violation.data?.member, + }); + case 'smartscanFailed': + return translate('violations.smartscanFailed'); + case 'someTagLevelsRequired': + return translate('violations.someTagLevelsRequired'); + case 'tagOutOfPolicy': + return translate('violations.tagOutOfPolicy', {tagName: violation.data?.tagName}); + case 'taxAmountChanged': + return translate('violations.taxAmountChanged'); + case 'taxOutOfPolicy': + return translate('violations.taxOutOfPolicy', {taxName: violation.data?.taxName}); + case 'taxRateChanged': + return translate('violations.taxRateChanged'); + case 'taxRequired': + return translate('violations.taxRequired'); default: // The interpreter should never get here because the switch cases should be exhaustive. - // // If typescript is showing an error on the assertion below it means the switch statement is out of // sync with the `ViolationNames` type, and one or the other needs to be updated. - // - // The 'unnecessary' type assertion below is the guarantee of type safety for these translations. - // // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion return violation.name as never; } From e91c965a6388d27c3092b048a063492fa3a79c4c Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 15:52:23 -0500 Subject: [PATCH 051/130] feat(Violations): fix comment --- src/types/onyx/TransactionViolation.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 283ad1dda67a..ef86e802ce66 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,7 +1,8 @@ import CONST from '@src/CONST'; /** - * Names of Fields where violations can occur. Derived from `CONST.VIOLATIONS` to maintain a single source of truth. + * Names of violations. + * Derived from `CONST.VIOLATIONS` to maintain a single source of truth. */ type ViolationName = (typeof CONST.VIOLATIONS)[keyof typeof CONST.VIOLATIONS]; From 7ec90984b73f75b112393b69b7d6359ae1b9e0e0 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 16:12:13 -0500 Subject: [PATCH 052/130] feat(Violations): move propTypes into MoneyRequestView --- .../ReportActionItem/MoneyRequestView.js | 11 ++++++++++- src/components/ViolationMessages.tsx | 2 +- src/libs/Violations/propTypes.ts | 15 --------------- src/libs/{Violations => }/ViolationsUtils.ts | 2 +- tests/unit/ViolationUtilsTest.js | 2 +- 5 files changed, 13 insertions(+), 19 deletions(-) delete mode 100644 src/libs/Violations/propTypes.ts rename src/libs/{Violations => }/ViolationsUtils.ts (99%) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 9fa0121fc60e..b142ebcb5ee8 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -30,7 +30,6 @@ import * as ReceiptUtils from '@libs/ReceiptUtils'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; -import {transactionViolationsPropTypes} from '@libs/Violations/propTypes'; import AnimatedEmptyStateBackground from '@pages/home/report/AnimatedEmptyStateBackground'; import reportActionPropTypes from '@pages/home/report/reportActionPropTypes'; import iouReportPropTypes from '@pages/iouReportPropTypes'; @@ -44,6 +43,16 @@ import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import ReportActionItemImage from './ReportActionItemImage'; +const violationNames = lodashValues(CONST.VIOLATIONS); + +const transactionViolationPropType = PropTypes.shape({ + type: PropTypes.string.isRequired, + name: PropTypes.oneOf(violationNames).isRequired, + data: PropTypes.objectOf(PropTypes.string), +}); + +const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); + const propTypes = { /** The report currently being looked at */ report: reportPropTypes.isRequired, diff --git a/src/components/ViolationMessages.tsx b/src/components/ViolationMessages.tsx index a53272904540..94d112f3e849 100644 --- a/src/components/ViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -1,7 +1,7 @@ import React, {useMemo} from 'react'; import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; -import ViolationsUtils from '@libs/Violations/ViolationsUtils'; +import ViolationsUtils from '@libs/ViolationsUtils'; import useThemeStyles from '@styles/useThemeStyles'; import {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; diff --git a/src/libs/Violations/propTypes.ts b/src/libs/Violations/propTypes.ts deleted file mode 100644 index c3c0527dfa9a..000000000000 --- a/src/libs/Violations/propTypes.ts +++ /dev/null @@ -1,15 +0,0 @@ -import PropTypes from 'prop-types'; -import CONST from '@src/CONST'; -import {ViolationName} from '@src/types/onyx'; - -const violationNames = Object.values(CONST.VIOLATIONS) as ViolationName[]; - -const transactionViolationPropType = PropTypes.shape({ - type: PropTypes.string.isRequired, - name: PropTypes.oneOf(violationNames).isRequired, - userMessage: PropTypes.string.isRequired, - data: PropTypes.objectOf(PropTypes.string), -}); -const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); - -export {transactionViolationsPropTypes, transactionViolationPropType}; diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/ViolationsUtils.ts similarity index 99% rename from src/libs/Violations/ViolationsUtils.ts rename to src/libs/ViolationsUtils.ts index 553fcc942068..6a36e2ca58a5 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/ViolationsUtils.ts @@ -1,9 +1,9 @@ import reject from 'lodash/reject'; import Onyx from 'react-native-onyx'; -import {Phrase, PhraseParameters} from '@libs/Localize'; import {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; +import {Phrase, PhraseParameters} from './Localize'; const ViolationsUtils = { /** diff --git a/tests/unit/ViolationUtilsTest.js b/tests/unit/ViolationUtilsTest.js index f0b53443831e..cc84c547da2e 100644 --- a/tests/unit/ViolationUtilsTest.js +++ b/tests/unit/ViolationUtilsTest.js @@ -1,6 +1,6 @@ import {beforeEach} from '@jest/globals'; import Onyx from 'react-native-onyx'; -import ViolationsUtils from '@libs/Violations/ViolationsUtils'; +import ViolationsUtils from '@libs/ViolationsUtils'; import ONYXKEYS from '@src/ONYXKEYS'; const categoryOutOfPolicyViolation = { From 84f83fc31886d78616523de11cd02089939f4082 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 16:21:10 -0500 Subject: [PATCH 053/130] feat(Violations): remove unnecessary cast --- src/components/ReportActionItem/MoneyRequestView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index b142ebcb5ee8..0bf16af970a2 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -148,7 +148,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); const {getViolationsForField} = useViolations(transactionViolations); - const hasViolations = useCallback((field) => canUseViolations && Boolean(getViolationsForField(field).length > 0), [canUseViolations, getViolationsForField]); + const hasViolations = useCallback((field) => canUseViolations && getViolationsForField(field).length > 0, [canUseViolations, getViolationsForField]); let amountDescription = `${translate('iou.amount')}`; From d8e9ddc39fe3beaff55479b5102580570ea4ae0c Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 18:49:43 -0500 Subject: [PATCH 054/130] feat(Violations): move key back --- src/ONYXKEYS.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 65f12a75d15d..933ae678da23 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -270,10 +270,10 @@ const ONYXKEYS = { REPORT_USER_IS_TYPING: 'reportUserIsTyping_', REPORT_USER_IS_LEAVING_ROOM: 'reportUserIsLeavingRoom_', SECURITY_GROUP: 'securityGroup_', + TRANSACTION: 'transactions_', TRANSACTION_VIOLATIONS: 'transactionViolations_', // Holds temporary transactions used during the creation and edit flow - TRANSACTION: 'transactions_', TRANSACTION_DRAFT: 'transactionsDraft_', SPLIT_TRANSACTION_DRAFT: 'splitTransactionDraft_', PRIVATE_NOTES_DRAFT: 'privateNotesDraft_', From d9ef8e2fc3c1d7f30be949057c1432729fbbe029 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 18:52:17 -0500 Subject: [PATCH 055/130] feat(Violations): remove unnecessary fragment --- src/components/ViolationMessages.tsx | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/components/ViolationMessages.tsx b/src/components/ViolationMessages.tsx index 94d112f3e849..01f16f8ff587 100644 --- a/src/components/ViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -11,13 +11,9 @@ export default function ViolationMessages({violations}: {violations: Transaction const {translate} = useLocalize(); const violationMessages = useMemo(() => violations.map((violation) => [violation.name, ViolationsUtils.getViolationTranslation(violation, translate)]), [translate, violations]); - return ( - <> - {violationMessages.map(([name, message]) => ( - - {message} - - ))} - - ); + return violationMessages.map(([name, message]) => ( + + {message} + + )); } From 02da9ec0f5f7bb59bf82bb4d23d36e7c2ec13389 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 18:54:37 -0500 Subject: [PATCH 056/130] feat(Violations): add period --- src/hooks/useViolations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index a8634b17c06e..f9cd8ac0d764 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -2,7 +2,7 @@ import {useCallback, useMemo} from 'react'; import {TransactionViolation, ViolationName} from '@src/types/onyx'; /** - * Names of Fields where violations can occur + * Names of Fields where violations can occur. */ type ViolationField = 'amount' | 'billable' | 'category' | 'comment' | 'date' | 'merchant' | 'receipt' | 'tag' | 'tax'; From 1fe91ef292cb0f6974433e31230e6eea8700479b Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 18:54:45 -0500 Subject: [PATCH 057/130] feat(Violations): remove blank line --- src/languages/en.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 95075d2509fb..1a84a35f2c44 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2046,7 +2046,6 @@ export default { ? `Can't auto-match receipt due to broken bank connection which ${email} needs to fix` : "Can't auto-match receipt due to broken bank connection which you need to fix"; } - if (!isTransactionOlderThan7Days) { return isAdmin ? `Ask ${member} to mark as a cash or wait 7 days and try again` : 'Awaiting merge with card transaction.'; } From 9b7753c26843e6e492734a394e3ccb346a60cdc0 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Tue, 12 Dec 2023 18:56:57 -0500 Subject: [PATCH 058/130] feat(Violations): remove comment --- src/libs/ViolationsUtils.ts | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/src/libs/ViolationsUtils.ts b/src/libs/ViolationsUtils.ts index 6a36e2ca58a5..e3e4cbb8e192 100644 --- a/src/libs/ViolationsUtils.ts +++ b/src/libs/ViolationsUtils.ts @@ -88,37 +88,6 @@ const ViolationsUtils = { * Necessary because `translate` throws a type error if you attempt to pass it a template strings, when the * possible values could be either translation keys that resolve to strings or translation keys that resolve to * functions. - * - * The issue is with the type of {@link PhraseParameters} which is defined as - * `type PhraseParameters = T extends (...args: infer A) => string ? A : never[];` - * - * This says that if T is a function from some args to a string, then T is the type of the arguments. If T is - * anything else, then T should not be assigned a value. - * - * When a templated key is passed whose final value could be either, the type checker pessimistically assigns it - * never. There seems to be some block somewhere in the type system that prevents it from fully resolving it. - * - * For instance: - * `translate('violations.missingCategory')` resolves to the string 'Missing category', - * `translate('violations.overLimit') resolves to the function `({amount}: ViolationsOverLimitParams) => `Amount - * over ${amount}/person limit`, - * - * But for some reason, typescript can't correctly infer the types when there is a union of multiple strings: - * ``` - * const missingCategory = {key: 'missingCategory' as ViolationName , params:undefined}; - * const overLimit = {key: }'overLimit' as ViolationName, params: {amount: 1}; - * - * //this works fine: - * const missingCategoryTranslation = translate(`violations.${missingCategory.key}`) - * // this too - * const overLimitsTranslation = translate(`violations.${overLimit.key}`, overLimit.params) - * - * // but this will throw an error on the params arg because the type checker can't sufficiently resolve the type. - * // Even though the type _should_ be sufficiently narrowed by the time it gets there. - * [missingCategory, overLimit].map({key, params}} => params - * ? translate(`violations.${key}`, params) - * : translate(`violations.$key}`) - * ``` */ getViolationTranslation( violation: TransactionViolation, translate: (phraseKey: TKey, ...phraseParameters: PhraseParameters>) => string, From b491946f694b087665e8e99a74a7141f1ffb8cc8 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 13 Dec 2023 10:43:01 -0500 Subject: [PATCH 059/130] feat(Violations): add newline --- src/libs/ViolationsUtils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/ViolationsUtils.ts b/src/libs/ViolationsUtils.ts index e3e4cbb8e192..09c97ff1133c 100644 --- a/src/libs/ViolationsUtils.ts +++ b/src/libs/ViolationsUtils.ts @@ -88,7 +88,8 @@ const ViolationsUtils = { * Necessary because `translate` throws a type error if you attempt to pass it a template strings, when the * possible values could be either translation keys that resolve to strings or translation keys that resolve to * functions. - */ getViolationTranslation( + */ + getViolationTranslation( violation: TransactionViolation, translate: (phraseKey: TKey, ...phraseParameters: PhraseParameters>) => string, ): string { From ea1828c67a9efda10d4c3a20986c2cffd9c27126 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Thu, 14 Dec 2023 13:14:55 -0500 Subject: [PATCH 060/130] feat(Violations): specify shape of data type. --- .../ReportActionItem/MoneyRequestView.js | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index de7cdfc4aa2e..d716670719fb 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -48,7 +48,25 @@ const violationNames = lodashValues(CONST.VIOLATIONS); const transactionViolationPropType = PropTypes.shape({ type: PropTypes.string.isRequired, name: PropTypes.oneOf(violationNames).isRequired, - data: PropTypes.objectOf(PropTypes.string), + data: PropTypes.shape({ + rejectedBy: PropTypes.string, + rejectReason: PropTypes.string, + amount: PropTypes.string, + surcharge: PropTypes.number, + invoiceMarkup: PropTypes.number, + maxAge: PropTypes.number, + tagName: PropTypes.string, + formattedLimitAmount: PropTypes.string, + categoryLimit: PropTypes.string, + limit: PropTypes.string, + category: PropTypes.string, + brokenBankConnection: PropTypes.bool, + isAdmin: PropTypes.bool, + email: PropTypes.string, + isTransactionOlderThan7Days: PropTypes.bool, + member: PropTypes.string, + taxName: PropTypes.string, + }), }); const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); From b770e8d6b48ec7a587ebb8fea0351d3c01c7c428 Mon Sep 17 00:00:00 2001 From: Jakub Butkiewicz Date: Fri, 15 Dec 2023 12:10:56 +0100 Subject: [PATCH 061/130] ref: migrated WorkspaceInvoiceVBAView and added one prop to menu items proptypes --- src/components/menuItemPropTypes.js | 3 +++ ...n.js => WorkspaceInvoicesFirstSection.tsx} | 0 ...View.js => WorkspaceInvoicesNoVBAView.tsx} | 0 ...oicesPage.js => WorkspaceInvoicesPage.tsx} | 0 ...BAView.js => WorkspaceInvoicesVBAView.tsx} | 27 +++++++++---------- 5 files changed, 15 insertions(+), 15 deletions(-) rename src/pages/workspace/invoices/{WorkspaceInvoicesFirstSection.js => WorkspaceInvoicesFirstSection.tsx} (100%) rename src/pages/workspace/invoices/{WorkspaceInvoicesNoVBAView.js => WorkspaceInvoicesNoVBAView.tsx} (100%) rename src/pages/workspace/invoices/{WorkspaceInvoicesPage.js => WorkspaceInvoicesPage.tsx} (100%) rename src/pages/workspace/invoices/{WorkspaceInvoicesVBAView.js => WorkspaceInvoicesVBAView.tsx} (58%) diff --git a/src/components/menuItemPropTypes.js b/src/components/menuItemPropTypes.js index 4d2de3275e23..c12ce293c2bf 100644 --- a/src/components/menuItemPropTypes.js +++ b/src/components/menuItemPropTypes.js @@ -162,6 +162,9 @@ const propTypes = { /** Should check anonymous user in onPress function */ shouldCheckActionAllowedOnPress: PropTypes.bool, + + /** link the menu item link or function to get the link */ + link: PropTypes.oneOfType(PropTypes.func, PropTypes.string), }; export default propTypes; diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.js b/src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.tsx similarity index 100% rename from src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.js rename to src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.tsx diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.js b/src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.tsx similarity index 100% rename from src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.js rename to src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.tsx diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesPage.js b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx similarity index 100% rename from src/pages/workspace/invoices/WorkspaceInvoicesPage.js rename to src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesVBAView.js b/src/pages/workspace/invoices/WorkspaceInvoicesVBAView.tsx similarity index 58% rename from src/pages/workspace/invoices/WorkspaceInvoicesVBAView.js rename to src/pages/workspace/invoices/WorkspaceInvoicesVBAView.tsx index c5e047f6291b..5c62e16eaa4a 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoicesVBAView.js +++ b/src/pages/workspace/invoices/WorkspaceInvoicesVBAView.tsx @@ -1,36 +1,34 @@ -import PropTypes from 'prop-types'; import React from 'react'; import {View} from 'react-native'; import * as Expensicons from '@components/Icon/Expensicons'; import * as Illustrations from '@components/Icon/Illustrations'; import Section from '@components/Section'; import Text from '@components/Text'; -import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; +import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Link from '@userActions/Link'; import WorkspaceInvoicesFirstSection from './WorkspaceInvoicesFirstSection'; -const propTypes = { - /** The policy ID currently being configured */ - policyID: PropTypes.string.isRequired, - - ...withLocalizePropTypes, +type WorkspaceInvoicesVBAViewProps = { + /** The polgicy ID currently being configured */ + policyID: string; }; -function WorkspaceInvoicesVBAView(props) { +function WorkspaceInvoicesVBAView({policyID}: WorkspaceInvoicesVBAViewProps) { + const {translate} = useLocalize(); const styles = useThemeStyles(); - const viewUnpaidInvoicesUrl = `reports?policyID=${props.policyID}&from=all&type=invoice&showStates=Processing&isAdvancedFilterMode=true`; + const viewUnpaidInvoicesUrl = `reports?policyID=${policyID}&from=all&type=invoice&showStates=Processing&isAdvancedFilterMode=true`; return ( <> - +
Link.openOldDotLink(viewUnpaidInvoicesUrl), icon: Expensicons.Hourglass, shouldShowRightIcon: true, @@ -41,14 +39,13 @@ function WorkspaceInvoicesVBAView(props) { ]} > - {props.translate('workspace.invoices.unlockVBACopy')} + {translate('workspace.invoices.unlockVBACopy')}
); } -WorkspaceInvoicesVBAView.propTypes = propTypes; WorkspaceInvoicesVBAView.displayName = 'WorkspaceInvoicesVBAView'; -export default withLocalize(WorkspaceInvoicesVBAView); +export default WorkspaceInvoicesVBAView; From d44ee3f3485227b3906e66354fffe0b1a1f16598 Mon Sep 17 00:00:00 2001 From: Jakub Butkiewicz Date: Fri, 15 Dec 2023 12:15:48 +0100 Subject: [PATCH 062/130] ref: moved WorkspaceInvoicesPage to TS --- .../invoices/WorkspaceInvoicesPage.tsx | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx index 8bc0c4484100..49e9430768cf 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx +++ b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx @@ -1,33 +1,25 @@ -import PropTypes from 'prop-types'; +import {StackScreenProps} from '@react-navigation/stack'; import React from 'react'; -import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; +import useLocalize from '@hooks/useLocalize'; +import {SettingsNavigatorParamList} from '@libs/Navigation/types'; import WorkspacePageWithSections from '@pages/workspace/WorkspacePageWithSections'; import CONST from '@src/CONST'; +import SCREENS from '@src/SCREENS'; import WorkspaceInvoicesNoVBAView from './WorkspaceInvoicesNoVBAView'; import WorkspaceInvoicesVBAView from './WorkspaceInvoicesVBAView'; -const propTypes = { - /** The route object passed to this page from the navigator */ - route: PropTypes.shape({ - /** Each parameter passed via the URL */ - params: PropTypes.shape({ - /** The policyID that is being configured */ - policyID: PropTypes.string.isRequired, - }).isRequired, - }).isRequired, +type WorkspaceInvoicesPageProps = StackScreenProps; - ...withLocalizePropTypes, -}; - -function WorkspaceInvoicesPage(props) { +function WorkspaceInvoicesPage({route}: WorkspaceInvoicesPageProps) { + const {translate} = useLocalize(); return ( - {(hasVBA, policyID) => ( + {(hasVBA: boolean, policyID: string) => ( <> {!hasVBA && } {hasVBA && } @@ -37,7 +29,6 @@ function WorkspaceInvoicesPage(props) { ); } -WorkspaceInvoicesPage.propTypes = propTypes; WorkspaceInvoicesPage.displayName = 'WorkspaceInvoicesPage'; -export default withLocalize(WorkspaceInvoicesPage); +export default WorkspaceInvoicesPage; From b794b822ddf92a5aebf5aa740f0cbf4a26a5abf7 Mon Sep 17 00:00:00 2001 From: Jakub Butkiewicz Date: Fri, 15 Dec 2023 12:19:17 +0100 Subject: [PATCH 063/130] ref: Refactor WorkspaceInvoicesNoVBAView component to TS --- .../invoices/WorkspaceInvoicesNoVBAView.tsx | 24 +++++++++---------- .../invoices/WorkspaceInvoicesPage.tsx | 1 + 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.tsx b/src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.tsx index 25a97ac93442..b382f0d7c609 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.tsx +++ b/src/pages/workspace/invoices/WorkspaceInvoicesNoVBAView.tsx @@ -1,37 +1,36 @@ -import PropTypes from 'prop-types'; import React from 'react'; import {View} from 'react-native'; import ConnectBankAccountButton from '@components/ConnectBankAccountButton'; import * as Illustrations from '@components/Icon/Illustrations'; import Section from '@components/Section'; import Text from '@components/Text'; -import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; +import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import WorkspaceInvoicesFirstSection from './WorkspaceInvoicesFirstSection'; -const propTypes = { +type WorkspaceInvoicesNoVBAViewProps = { /** The policy ID currently being configured */ - policyID: PropTypes.string.isRequired, - - ...withLocalizePropTypes, + policyID: string; }; -function WorkspaceInvoicesNoVBAView(props) { +function WorkspaceInvoicesNoVBAView({policyID}: WorkspaceInvoicesNoVBAViewProps) { const styles = useThemeStyles(); + const {translate} = useLocalize(); + return ( <> - +
- {props.translate('workspace.invoices.unlockNoVBACopy')} + {translate('workspace.invoices.unlockNoVBACopy')}
@@ -39,7 +38,6 @@ function WorkspaceInvoicesNoVBAView(props) { ); } -WorkspaceInvoicesNoVBAView.propTypes = propTypes; WorkspaceInvoicesNoVBAView.displayName = 'WorkspaceInvoicesNoVBAView'; -export default withLocalize(WorkspaceInvoicesNoVBAView); +export default WorkspaceInvoicesNoVBAView; diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx index 49e9430768cf..8c1eb5b66871 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx +++ b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx @@ -12,6 +12,7 @@ type WorkspaceInvoicesPageProps = StackScreenProps Date: Fri, 15 Dec 2023 12:26:28 +0100 Subject: [PATCH 064/130] ref: Refactor WorkspaceInvoicesFirstSection component to TS --- .../WorkspaceInvoicesFirstSection.tsx | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.tsx b/src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.tsx index b33311021e61..ede9a94d5159 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.tsx +++ b/src/pages/workspace/invoices/WorkspaceInvoicesFirstSection.tsx @@ -1,33 +1,32 @@ -import PropTypes from 'prop-types'; import React from 'react'; import {View} from 'react-native'; import * as Expensicons from '@components/Icon/Expensicons'; import * as Illustrations from '@components/Icon/Illustrations'; import Section from '@components/Section'; import Text from '@components/Text'; -import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; +import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Link from '@userActions/Link'; -const propTypes = { +type WorkspaceInvoicesFirstSectionProps = { /** The policy ID currently being configured */ - policyID: PropTypes.string.isRequired, - - ...withLocalizePropTypes, + policyID: string; }; -function WorkspaceInvoicesFirstSection(props) { +function WorkspaceInvoicesFirstSection({policyID}: WorkspaceInvoicesFirstSectionProps) { const styles = useThemeStyles(); + const {translate} = useLocalize(); + const sendInvoiceUrl = encodeURI('reports?param={"createInvoice":true}'); - const viewAllInvoicesUrl = `reports?policyID=${props.policyID}&from=all&type=invoice&showStates=Open,Processing,Approved,Reimbursed,Archived&isAdvancedFilterMode=true`; + const viewAllInvoicesUrl = `reports?policyID=${policyID}&from=all&type=invoice&showStates=Open,Processing,Approved,Reimbursed,Archived&isAdvancedFilterMode=true`; return (
Link.openOldDotLink(sendInvoiceUrl), icon: Expensicons.Send, shouldShowRightIcon: true, @@ -36,7 +35,7 @@ function WorkspaceInvoicesFirstSection(props) { link: () => Link.buildOldDotURL(sendInvoiceUrl), }, { - title: props.translate('workspace.invoices.viewAllInvoices'), + title: translate('workspace.invoices.viewAllInvoices'), onPress: () => Link.openOldDotLink(viewAllInvoicesUrl), icon: Expensicons.Invoice, shouldShowRightIcon: true, @@ -48,13 +47,12 @@ function WorkspaceInvoicesFirstSection(props) { containerStyles={[styles.cardSection]} > - {props.translate('workspace.invoices.invoiceFirstSectionCopy')} + {translate('workspace.invoices.invoiceFirstSectionCopy')}
); } -WorkspaceInvoicesFirstSection.propTypes = propTypes; WorkspaceInvoicesFirstSection.displayName = 'WorkspaceInvoicesFirstSection'; -export default withLocalize(WorkspaceInvoicesFirstSection); +export default WorkspaceInvoicesFirstSection; From fe50d90539b2b51bbfeef78ed7d1dced62b0908a Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Fri, 15 Dec 2023 16:07:48 -0500 Subject: [PATCH 065/130] prettier --- src/components/ReportActionItem/MoneyRequestView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 9206d6f36d93..2379bf437c08 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -18,10 +18,10 @@ import ViolationMessages from '@components/ViolationMessages'; import withCurrentUserPersonalDetails, {withCurrentUserPersonalDetailsPropTypes} from '@components/withCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import usePermissions from '@hooks/usePermissions'; -import useViolations from '@hooks/useViolations'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; +import useViolations from '@hooks/useViolations'; import useWindowDimensions from '@hooks/useWindowDimensions'; import * as CardUtils from '@libs/CardUtils'; import compose from '@libs/compose'; From 44efe425a3bb4e909a0f48233fd53b25dfec15f5 Mon Sep 17 00:00:00 2001 From: Lizzi Lindboe Date: Fri, 15 Dec 2023 13:38:42 -0800 Subject: [PATCH 066/130] Fix hook import --- src/components/ViolationMessages.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ViolationMessages.tsx b/src/components/ViolationMessages.tsx index 01f16f8ff587..44209866ec43 100644 --- a/src/components/ViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -1,8 +1,8 @@ import React, {useMemo} from 'react'; import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; +import useThemeStyles from '@hooks/useThemeStyles'; import ViolationsUtils from '@libs/ViolationsUtils'; -import useThemeStyles from '@styles/useThemeStyles'; import {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; From 477c3a3166517c6366ef94ad1a2b116ed2d6210e Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 18 Dec 2023 14:07:27 +0700 Subject: [PATCH 067/130] fix lint --- src/libs/OptionsListUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index db7790983978..9375447db9ac 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -868,7 +868,7 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt title: '', shouldShow: false, indexOffset, - data: getIndentedOptionTree(filteredCategories), + data: getCategoryOptionTree(filteredCategories), }); return categorySections; From 7dbead3203bfc14cc9151604984d6c5d07f7f4b7 Mon Sep 17 00:00:00 2001 From: Jakub Butkiewicz Date: Mon, 18 Dec 2023 14:28:25 +0100 Subject: [PATCH 068/130] fix: typo --- src/components/menuItemPropTypes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/menuItemPropTypes.js b/src/components/menuItemPropTypes.js index c12ce293c2bf..21cc8295ff46 100644 --- a/src/components/menuItemPropTypes.js +++ b/src/components/menuItemPropTypes.js @@ -163,7 +163,7 @@ const propTypes = { /** Should check anonymous user in onPress function */ shouldCheckActionAllowedOnPress: PropTypes.bool, - /** link the menu item link or function to get the link */ + /** The menu item link or function to get the link */ link: PropTypes.oneOfType(PropTypes.func, PropTypes.string), }; From 9d9e9584ba9efaf0efc2b3a6e0411204a8bc5210 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Mon, 18 Dec 2023 16:35:08 +0100 Subject: [PATCH 069/130] fix: fix linter --- .../home/report/ReportActionCompose/SilentCommentUpdater.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js index 4b08dc428695..a57054fde7c6 100644 --- a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js +++ b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js @@ -67,7 +67,7 @@ function SilentCommentUpdater({comment, commentRef, report, value, updateComment } updateComment(comment); - }, [prevCommentProp, prevPreferredLocale, prevReportId, comment, preferredLocale, report.reportID, updateComment, value, commentRef, isWeb]); + }, [prevCommentProp, prevPreferredLocale, prevReportId, comment, preferredLocale, report.reportID, updateComment, value, commentRef]); return null; } From a2e3607d50beb45aa4ac6b2d55f2b0913748346d Mon Sep 17 00:00:00 2001 From: DylanDylann Date: Tue, 19 Dec 2023 12:33:49 +0700 Subject: [PATCH 070/130] fix invite message does not remain --- src/pages/workspace/WorkspaceInviteMessagePage.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceInviteMessagePage.js b/src/pages/workspace/WorkspaceInviteMessagePage.js index 64d086f6c407..1e5eedca9668 100644 --- a/src/pages/workspace/WorkspaceInviteMessagePage.js +++ b/src/pages/workspace/WorkspaceInviteMessagePage.js @@ -263,7 +263,12 @@ export default compose( }, workspaceInviteMessageDraft: { key: ({route}) => `${ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MESSAGE_DRAFT}${route.params.policyID.toString()}`, - selector: (draft) => (isEmpty(draft) ? '' : draft), + selector: (draft) => { + if (_.isUndefined(draft)) { + return draft; + } + return isEmpty(draft) ? '' : draft; + }, }, }), withNavigationFocus, From d7f5af4bbc894ac739888011855b22f3a287d500 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Tue, 19 Dec 2023 14:02:49 +0100 Subject: [PATCH 071/130] fix: fix prettier --- .../home/report/ReportActionCompose/SilentCommentUpdater.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js index a57054fde7c6..7c326ebc96b8 100644 --- a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js +++ b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js @@ -3,9 +3,9 @@ import {useEffect} from 'react'; import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import usePrevious from '@hooks/usePrevious'; -import ONYXKEYS from '@src/ONYXKEYS'; -import CONST from '@src/CONST'; import getPlatform from '@libs/getPlatform'; +import CONST from '@src/CONST'; +import ONYXKEYS from '@src/ONYXKEYS'; const propTypes = { /** The comment of the report */ @@ -34,7 +34,7 @@ const defaultProps = { comment: '', }; -const isWeb = getPlatform() === CONST.PLATFORM.WEB +const isWeb = getPlatform() === CONST.PLATFORM.WEB; /** * This component doesn't render anything. It runs a side effect to update the comment of a report under certain conditions. From e91d79d6ab7fdbb6446e046927bd6e2e62856c89 Mon Sep 17 00:00:00 2001 From: Tomasz Lesniakiewicz Date: Wed, 20 Dec 2023 14:42:38 +0100 Subject: [PATCH 072/130] refactor: add android file for SilentCommentUpdate --- .../SilentCommentUpdater/index.android.js | 47 +++++++++++++++++++ .../index.js} | 7 +-- 2 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.android.js rename src/pages/home/report/ReportActionCompose/{SilentCommentUpdater.js => SilentCommentUpdater/index.js} (88%) diff --git a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.android.js b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.android.js new file mode 100644 index 000000000000..f924a7b59194 --- /dev/null +++ b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.android.js @@ -0,0 +1,47 @@ +import PropTypes from 'prop-types'; +import {useEffect} from 'react'; +import {withOnyx} from 'react-native-onyx'; +import ONYXKEYS from '@src/ONYXKEYS'; + +const propTypes = { + /** The comment of the report */ + comment: PropTypes.string, + + /** Updates the comment */ + updateComment: PropTypes.func.isRequired, +}; + +const defaultProps = { + comment: '', +}; + +/** + * Adding .android component to disable updating comment when prev comment is different + * it fixes issue on Android, assuming we don't need tab sync on mobiles - https://github.com/Expensify/App/issues/28562 + */ + +/** + * This component doesn't render anything. It runs a side effect to update the comment of a report under certain conditions. + * It is connected to the actual draft comment in onyx. The comment in onyx might updates multiple times, and we want to avoid + * re-rendering a UI component for that. That's why the side effect was moved down to a separate component. + * @returns {null} + */ +function SilentCommentUpdater({comment, updateComment}) { + useEffect(() => { + updateComment(comment); + // eslint-disable-next-line react-hooks/exhaustive-deps -- We need to run this on mount + }, []); + + return null; +} + +SilentCommentUpdater.propTypes = propTypes; +SilentCommentUpdater.defaultProps = defaultProps; +SilentCommentUpdater.displayName = 'SilentCommentUpdater'; + +export default withOnyx({ + comment: { + key: ({reportID}) => `${ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT}${reportID}`, + initialValue: '', + }, +})(SilentCommentUpdater); diff --git a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js similarity index 88% rename from src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js rename to src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js index 7c326ebc96b8..54899d987e13 100644 --- a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater.js +++ b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js @@ -3,8 +3,6 @@ import {useEffect} from 'react'; import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import usePrevious from '@hooks/usePrevious'; -import getPlatform from '@libs/getPlatform'; -import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; const propTypes = { @@ -34,8 +32,6 @@ const defaultProps = { comment: '', }; -const isWeb = getPlatform() === CONST.PLATFORM.WEB; - /** * This component doesn't render anything. It runs a side effect to update the comment of a report under certain conditions. * It is connected to the actual draft comment in onyx. The comment in onyx might updates multiple times, and we want to avoid @@ -57,8 +53,7 @@ function SilentCommentUpdater({comment, commentRef, report, value, updateComment // Value state does not have the same value as comment props when the comment gets changed from another tab. // In this case, we should synchronize the value between tabs. - // Adding isWeb check to fix issue on Android, assuming we don't need tab sync on mobiles - https://github.com/Expensify/App/issues/28562 - const shouldSyncComment = isWeb && prevCommentProp !== comment && value !== comment; + const shouldSyncComment = prevCommentProp !== comment && value !== comment; // As the report IDs change, make sure to update the composer comment as we need to make sure // we do not show incorrect data in there (ie. draft of message from other report). From 3e078bce72df5d45ccc7d9517e6b7cfc2b05cc13 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 20 Dec 2023 15:41:10 -0500 Subject: [PATCH 073/130] feat(Violations): change spacing of violations --- .../ReportActionItem/MoneyRequestView.js | 28 ++++++++++--------- src/components/ViolationMessages.tsx | 17 +++++++---- src/styles/utils/spacing.ts | 4 +++ 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index 2379bf437c08..e50f74c4a5aa 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -109,7 +109,7 @@ const defaultProps = { currency: CONST.CURRENCY.USD, comment: {comment: ''}, }, - transactionViolations: null, + transactionViolations: [], policyTags: {}, }; @@ -342,18 +342,20 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate /> )} - {shouldShowBillable && ( - <> - - {translate('common.billable')} - IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} - /> - - {canUseViolations && } - + + + {translate('common.billable')} + IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} + /> + + {canUseViolations && ( + )} violations.map((violation) => [violation.name, ViolationsUtils.getViolationTranslation(violation, translate)]), [translate, violations]); - return violationMessages.map(([name, message]) => ( - - {message} + return ( + + {violationMessages.map(([name, message]) => ( + + {message} + + ))} - )); + ); } diff --git a/src/styles/utils/spacing.ts b/src/styles/utils/spacing.ts index b2597fc64603..3b65e36aeb98 100644 --- a/src/styles/utils/spacing.ts +++ b/src/styles/utils/spacing.ts @@ -223,6 +223,10 @@ export default { marginTop: 'auto', }, + mtn2: { + marginTop: -8, + }, + mtn6: { marginTop: -24, }, From 95952b16a21fdb3b87805cec92b122cb2e24d1ab Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 20 Dec 2023 16:00:13 -0500 Subject: [PATCH 074/130] feat(Violations): update styles --- .../ReportActionItem/MoneyRequestView.js | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index e50f74c4a5aa..a1f54f65be39 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -69,8 +69,6 @@ const transactionViolationPropType = PropTypes.shape({ }), }); -const transactionViolationsPropTypes = PropTypes.arrayOf(transactionViolationPropType); - const propTypes = { /** The report currently being looked at */ report: reportPropTypes.isRequired, @@ -92,7 +90,7 @@ const propTypes = { transaction: transactionPropTypes, /** Violations detected in this transaction */ - transactionViolations: transactionViolationsPropTypes, + transactionViolations: PropTypes.arrayOf(transactionViolationPropType), /** Collection of tags attached to a policy */ policyTags: tagPropTypes, @@ -343,19 +341,23 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate )} - - {translate('common.billable')} - IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} - /> - - {canUseViolations && ( - + {shouldShowBillable && ( + <> + + {translate('common.billable')} + IOU.editMoneyRequest(transaction, report.reportID, {billable: value})} + /> + + {hasViolations('billable') && ( + + )} + )} Date: Thu, 21 Dec 2023 11:21:17 +0100 Subject: [PATCH 075/130] refactor: format fix --- .../report/ReportActionCompose/SilentCommentUpdater/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js index 54899d987e13..9aa997a892f4 100644 --- a/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js +++ b/src/pages/home/report/ReportActionCompose/SilentCommentUpdater/index.js @@ -52,7 +52,6 @@ function SilentCommentUpdater({comment, commentRef, report, value, updateComment useEffect(() => { // Value state does not have the same value as comment props when the comment gets changed from another tab. // In this case, we should synchronize the value between tabs. - const shouldSyncComment = prevCommentProp !== comment && value !== comment; // As the report IDs change, make sure to update the composer comment as we need to make sure From 0a71d6603302781deb3073e028e2d9ea60e9c363 Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Mon, 25 Dec 2023 04:36:53 +0530 Subject: [PATCH 076/130] package update --- ios/Podfile.lock | 4 ++-- package-lock.json | 14 +++++++------- package.json | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index a19ea5b77df0..15b6a493d167 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -613,7 +613,7 @@ PODS: - React-Core - react-native-pager-view (6.2.0): - React-Core - - react-native-pdf (6.7.3): + - react-native-pdf (6.7.4): - React-Core - react-native-performance (5.1.0): - React-Core @@ -1286,7 +1286,7 @@ SPEC CHECKSUMS: react-native-key-command: 5af6ee30ff4932f78da6a2109017549042932aa5 react-native-netinfo: ccbe1085dffd16592791d550189772e13bf479e2 react-native-pager-view: 0ccb8bf60e2ebd38b1f3669fa3650ecce81db2df - react-native-pdf: b4ca3d37a9a86d9165287741c8b2ef4d8940c00e + react-native-pdf: 79aa75e39a80c1d45ffe58aa500f3cf08f267a2e react-native-performance: cef2b618d47b277fb5c3280b81a3aad1e72f2886 react-native-plaid-link-sdk: df1618a85a615d62ff34e34b76abb7a56497fbc1 react-native-quick-sqlite: bcc7a7a250a40222f18913a97cd356bf82d0a6c4 diff --git a/package-lock.json b/package-lock.json index f686f7152871..50068f83da93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,7 +96,7 @@ "react-native-modal": "^13.0.0", "react-native-onyx": "1.0.118", "react-native-pager-view": "^6.2.0", - "react-native-pdf": "^6.7.3", + "react-native-pdf": "^6.7.4", "react-native-performance": "^5.1.0", "react-native-permissions": "^3.9.3", "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#0d15d4618f58e99c1261921111e68ee85bb3c2a8", @@ -47582,9 +47582,9 @@ } }, "node_modules/react-native-pdf": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/react-native-pdf/-/react-native-pdf-6.7.3.tgz", - "integrity": "sha512-bK1fVkj18kBA5YlRFNJ3/vJ1bEX3FDHyAPY6ArtIdVs+vv0HzcK5WH9LSd2bxUsEMIyY9CSjP4j8BcxNXTiQkQ==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/react-native-pdf/-/react-native-pdf-6.7.4.tgz", + "integrity": "sha512-sBeNcsrTRnLjmiU9Wx7Uk0K2kPSQtKIIG+FECdrEG16TOdtmQ3iqqEwt0dmy0pJegpg07uES5BXqiKsKkRUIFw==", "dependencies": { "crypto-js": "4.2.0", "deprecated-react-native-prop-types": "^2.3.0" @@ -90432,9 +90432,9 @@ "requires": {} }, "react-native-pdf": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/react-native-pdf/-/react-native-pdf-6.7.3.tgz", - "integrity": "sha512-bK1fVkj18kBA5YlRFNJ3/vJ1bEX3FDHyAPY6ArtIdVs+vv0HzcK5WH9LSd2bxUsEMIyY9CSjP4j8BcxNXTiQkQ==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/react-native-pdf/-/react-native-pdf-6.7.4.tgz", + "integrity": "sha512-sBeNcsrTRnLjmiU9Wx7Uk0K2kPSQtKIIG+FECdrEG16TOdtmQ3iqqEwt0dmy0pJegpg07uES5BXqiKsKkRUIFw==", "requires": { "crypto-js": "4.2.0", "deprecated-react-native-prop-types": "^2.3.0" diff --git a/package.json b/package.json index 533e8575c17c..87a638f9eaef 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "react-native-modal": "^13.0.0", "react-native-onyx": "1.0.118", "react-native-pager-view": "^6.2.0", - "react-native-pdf": "^6.7.3", + "react-native-pdf": "^6.7.4", "react-native-performance": "^5.1.0", "react-native-permissions": "^3.9.3", "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#0d15d4618f58e99c1261921111e68ee85bb3c2a8", @@ -316,4 +316,4 @@ "node": "20.9.0", "npm": "10.1.0" } -} \ No newline at end of file +} From 7039ed9a577f3d1308db519e7c3e44ae0d801bd2 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 25 Dec 2023 15:30:26 +0700 Subject: [PATCH 077/130] fix margin bug --- src/libs/OptionsListUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index c199991122b8..db209371ab33 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -851,7 +851,7 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt categorySections.push({ // "Selected" section title: '', - shouldShow: true, + shouldShow: false, indexOffset, data: getCategoryOptionTree(selectedOptions, true), }); From 3abcdfb3b1d788f38769e0cc6aee23cf619d08e5 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 25 Dec 2023 15:44:41 +0700 Subject: [PATCH 078/130] fix margin bug --- src/libs/OptionsListUtils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index db209371ab33..d8c864027399 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -851,7 +851,7 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt categorySections.push({ // "Selected" section title: '', - shouldShow: false, + shouldShow: true, indexOffset, data: getCategoryOptionTree(selectedOptions, true), }); @@ -862,7 +862,7 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt const selectedOptionNames = _.map(selectedOptions, (selectedOption) => selectedOption.name); const filteredCategories = _.filter(enabledCategories, (category) => !_.includes(selectedOptionNames, category.name)); const numberOfVisibleCategories = selectedOptions.length + filteredCategories.length; - + if (numberOfVisibleCategories < CONST.CATEGORY_LIST_THRESHOLD) { categorySections.push({ // "All" section when items amount less than the threshold From 19891e10c204d5ffe0ced25f737b7e7177bf6327 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 25 Dec 2023 15:46:18 +0700 Subject: [PATCH 079/130] fix margin bug --- src/libs/OptionsListUtils.js | 2 +- tests/unit/OptionsListUtilsTest.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index d8c864027399..18a66b884e6c 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -851,7 +851,7 @@ function getCategoryListSections(categories, recentlyUsedCategories, selectedOpt categorySections.push({ // "Selected" section title: '', - shouldShow: true, + shouldShow: false, indexOffset, data: getCategoryOptionTree(selectedOptions, true), }); diff --git a/tests/unit/OptionsListUtilsTest.js b/tests/unit/OptionsListUtilsTest.js index 999107f0b3ae..eb8c02903d7e 100644 --- a/tests/unit/OptionsListUtilsTest.js +++ b/tests/unit/OptionsListUtilsTest.js @@ -817,7 +817,7 @@ describe('OptionsListUtils', () => { const largeResultList = [ { title: '', - shouldShow: true, + shouldShow: false, indexOffset: 0, data: [ { From 468b4b0c21a38b0aaf761f033b36f2241f1b3a5a Mon Sep 17 00:00:00 2001 From: DylanDylann Date: Wed, 27 Dec 2023 01:34:12 +0700 Subject: [PATCH 080/130] fix remove selector --- src/pages/workspace/WorkspaceInviteMessagePage.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/pages/workspace/WorkspaceInviteMessagePage.js b/src/pages/workspace/WorkspaceInviteMessagePage.js index 1e5eedca9668..1943d12bb3e6 100644 --- a/src/pages/workspace/WorkspaceInviteMessagePage.js +++ b/src/pages/workspace/WorkspaceInviteMessagePage.js @@ -263,12 +263,6 @@ export default compose( }, workspaceInviteMessageDraft: { key: ({route}) => `${ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MESSAGE_DRAFT}${route.params.policyID.toString()}`, - selector: (draft) => { - if (_.isUndefined(draft)) { - return draft; - } - return isEmpty(draft) ? '' : draft; - }, }, }), withNavigationFocus, From 094c552e61e9f1ae6bd30052108a9255057d5b09 Mon Sep 17 00:00:00 2001 From: DylanDylann Date: Wed, 27 Dec 2023 01:37:34 +0700 Subject: [PATCH 081/130] fix remove isEmpty --- src/pages/workspace/WorkspaceInviteMessagePage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceInviteMessagePage.js b/src/pages/workspace/WorkspaceInviteMessagePage.js index 1943d12bb3e6..d280ae4f37d1 100644 --- a/src/pages/workspace/WorkspaceInviteMessagePage.js +++ b/src/pages/workspace/WorkspaceInviteMessagePage.js @@ -1,4 +1,3 @@ -import {isEmpty} from 'lodash'; import lodashGet from 'lodash/get'; import PropTypes from 'prop-types'; import React from 'react'; From 2366ade8c05667948326ecc0242f7b433c09c0d7 Mon Sep 17 00:00:00 2001 From: Yauheni Date: Thu, 28 Dec 2023 07:21:37 +0300 Subject: [PATCH 082/130] Fix bug with Upload photo icon remains white in light mode --- src/components/AvatarWithImagePicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AvatarWithImagePicker.js b/src/components/AvatarWithImagePicker.js index d766d4cb6f22..b294671a1da9 100644 --- a/src/components/AvatarWithImagePicker.js +++ b/src/components/AvatarWithImagePicker.js @@ -322,7 +322,7 @@ function AvatarWithImagePicker({ src={Expensicons.Camera} width={variables.iconSizeSmall} height={variables.iconSizeSmall} - fill={theme.textLight} + fill={theme.inverse} /> From 179d306f249993fd3ee7921d69b2c3e574ba1d62 Mon Sep 17 00:00:00 2001 From: Yauheni Date: Thu, 28 Dec 2023 23:25:19 +0300 Subject: [PATCH 083/130] Fix bug with location text does not change on selecting Use current location --- src/components/AddressSearch/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/AddressSearch/index.js b/src/components/AddressSearch/index.js index d9e4ef2c0f6e..5b70cacee81c 100644 --- a/src/components/AddressSearch/index.js +++ b/src/components/AddressSearch/index.js @@ -344,6 +344,7 @@ function AddressSearch({ lat: successData.coords.latitude, lng: successData.coords.longitude, address: CONST.YOUR_LOCATION_TEXT, + name: CONST.YOUR_LOCATION_TEXT, }; onPress(location); }, From 7b08bdbf521e596ed9782e8e385df0ce6884a92e Mon Sep 17 00:00:00 2001 From: Krishna Gupta Date: Sat, 30 Dec 2023 13:27:11 +0530 Subject: [PATCH 084/130] fix: Codeblocks does not wrap. Signed-off-by: Krishna Gupta --- .../BasePreRenderer.js => PreRenderer.js} | 36 ++++------ .../HTMLRenderers/PreRenderer/index.js | 68 ------------------- .../HTMLRenderers/PreRenderer/index.native.js | 14 ---- 3 files changed, 15 insertions(+), 103 deletions(-) rename src/components/HTMLEngineProvider/HTMLRenderers/{PreRenderer/BasePreRenderer.js => PreRenderer.js} (68%) delete mode 100644 src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.js delete mode 100644 src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.native.js diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/BasePreRenderer.js b/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js similarity index 68% rename from src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/BasePreRenderer.js rename to src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js index 07954cc97a00..948dec6757f7 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/BasePreRenderer.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js @@ -1,14 +1,14 @@ import PropTypes from 'prop-types'; -import React, {forwardRef} from 'react'; -import {ScrollView, View} from 'react-native'; +import React from 'react'; +import {View} from 'react-native'; import _ from 'underscore'; -import htmlRendererPropTypes from '@components/HTMLEngineProvider/HTMLRenderers/htmlRendererPropTypes'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import {ShowContextMenuContext, showContextMenuForReport} from '@components/ShowContextMenuContext'; import withLocalize from '@components/withLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ReportUtils from '@libs/ReportUtils'; import CONST from '@src/CONST'; +import htmlRendererPropTypes from './htmlRendererPropTypes'; const propTypes = { /** Press in handler for the code block */ @@ -31,20 +31,14 @@ const defaultProps = { onPressOut: undefined, }; -const BasePreRenderer = forwardRef((props, ref) => { +function PreRenderer(props) { const styles = useThemeStyles(); const TDefaultRenderer = props.TDefaultRenderer; const defaultRendererProps = _.omit(props, ['TDefaultRenderer', 'onPressIn', 'onPressOut', 'onLongPress']); const isLast = props.renderIndex === props.renderLength - 1; return ( - + {({anchor, report, action, checkIfContextMenuActive}) => ( { role={CONST.ROLE.PRESENTATION} accessibilityLabel={props.translate('accessibilityHints.prestyledText')} > - - {/* eslint-disable-next-line react/jsx-props-no-spreading */} - - + {/* */} + {/* eslint-disable-next-line react/jsx-props-no-spreading */} + + {/* */} )} - + ); -}); +} -BasePreRenderer.displayName = 'BasePreRenderer'; -BasePreRenderer.propTypes = propTypes; -BasePreRenderer.defaultProps = defaultProps; +PreRenderer.displayName = 'PreRenderer'; +PreRenderer.propTypes = propTypes; +PreRenderer.defaultProps = defaultProps; -export default withLocalize(BasePreRenderer); +export default withLocalize(PreRenderer); diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.js b/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.js deleted file mode 100644 index 3beb52e6ee81..000000000000 --- a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.js +++ /dev/null @@ -1,68 +0,0 @@ -import React, {useCallback, useEffect, useRef} from 'react'; -import _ from 'underscore'; -import htmlRendererPropTypes from '@components/HTMLEngineProvider/HTMLRenderers/htmlRendererPropTypes'; -import ControlSelection from '@libs/ControlSelection'; -import * as DeviceCapabilities from '@libs/DeviceCapabilities'; -import BasePreRenderer from './BasePreRenderer'; - -const supportsPassive = DeviceCapabilities.hasPassiveEventListenerSupport(); - -const isScrollingVertically = (event) => - // Mark as vertical scrolling only when absolute value of deltaY is more than the double of absolute - // value of deltaX, so user can use trackpad scroll on the code block horizontally at a wide angle. - Math.abs(event.deltaY) > Math.abs(event.deltaX) * 2; - -const debouncedIsScrollingVertically = _.debounce(isScrollingVertically, 100, true); - -function PreRenderer(props) { - const scrollViewRef = useRef(); - - /** - * Checks if user is scrolling vertically based on deltaX and deltaY. We debounce this - * method in order to make sure it's called only for the first event. - * @param {WheelEvent} event Wheel event - * @returns {Boolean} true if user is scrolling vertically - */ - - /** - * Manually scrolls the code block if code block horizontal scrollable, then prevents the event from being passed up to the parent. - * @param {Object} event native event - */ - const scrollNode = useCallback((event) => { - const node = scrollViewRef.current.getScrollableNode(); - const horizontalOverflow = node.scrollWidth > node.offsetWidth; - if (event.currentTarget === node && horizontalOverflow && !debouncedIsScrollingVertically(event)) { - node.scrollLeft += event.deltaX; - } - }, []); - - useEffect(() => { - const eventListenerRefValue = scrollViewRef.current; - if (!eventListenerRefValue) { - return; - } - eventListenerRefValue.getScrollableNode().addEventListener('wheel', scrollNode, supportsPassive ? {passive: true} : false); - - return () => { - if (!eventListenerRefValue.getScrollableNode()) { - return; - } - eventListenerRefValue.getScrollableNode().removeEventListener('wheel', scrollNode); - }; - }, [scrollNode]); - - return ( - DeviceCapabilities.canUseTouchScreen() && ControlSelection.block()} - onPressOut={ControlSelection.unblock} - /> - ); -} - -PreRenderer.propTypes = htmlRendererPropTypes; -PreRenderer.displayName = 'PreRenderer'; - -export default PreRenderer; diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.native.js b/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.native.js deleted file mode 100644 index b84dd43dd82f..000000000000 --- a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer/index.native.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import htmlRendererPropTypes from '@components/HTMLEngineProvider/HTMLRenderers/htmlRendererPropTypes'; -import withLocalize from '@components/withLocalize'; -import BasePreRenderer from './BasePreRenderer'; - -function PreRenderer(props) { - // eslint-disable-next-line react/jsx-props-no-spreading - return ; -} - -PreRenderer.propTypes = htmlRendererPropTypes; -PreRenderer.displayName = 'PreRenderer'; - -export default withLocalize(PreRenderer); From 1c33bf501169d260f254089466d21cd18216dba9 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 2 Jan 2024 14:41:33 +0700 Subject: [PATCH 085/130] add isDeletedParentAction field --- src/libs/SidebarUtils.ts | 2 ++ src/pages/home/sidebar/SidebarLinksData.js | 1 + 2 files changed, 3 insertions(+) diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index c4fad1a86906..47fd296a4b73 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -274,6 +274,7 @@ function getOptionData( isExpenseRequest: false, isWaitingOnBankAccount: false, isAllowedToComment: true, + isDeletedParentAction: false, }; const participantPersonalDetailList: PersonalDetails[] = Object.values(OptionsListUtils.getPersonalDetailsForAccountIDs(report.participantAccountIDs ?? [], personalDetails)); const personalDetail = participantPersonalDetailList[0] ?? {}; @@ -309,6 +310,7 @@ function getOptionData( result.notificationPreference = report.notificationPreference; result.isAllowedToComment = ReportUtils.canUserPerformWriteAction(report); result.chatType = report.chatType; + result.isDeletedParentAction = report.isDeletedParentAction; const hasMultipleParticipants = participantPersonalDetailList.length > 1 || result.isChatRoom || result.isPolicyExpenseChat || ReportUtils.isExpenseReport(report); const subtitle = ReportUtils.getChatRoomSubtitle(report); diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index dbc77a41817b..580cc7909fd1 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -168,6 +168,7 @@ const chatReportSelector = (report) => // Other important less obivous properties for filtering: parentReportActionID: report.parentReportActionID, parentReportID: report.parentReportID, + isDeletedParentAction: report.isDeletedParentAction, }; /** From e5db8866c7ddbdb9a4790f0a4025868f8b2bc053 Mon Sep 17 00:00:00 2001 From: Yauheni Date: Tue, 2 Jan 2024 12:29:46 +0300 Subject: [PATCH 086/130] Update colors --- src/components/AvatarWithImagePicker.js | 2 +- src/styles/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/AvatarWithImagePicker.js b/src/components/AvatarWithImagePicker.js index b294671a1da9..71193147c292 100644 --- a/src/components/AvatarWithImagePicker.js +++ b/src/components/AvatarWithImagePicker.js @@ -322,7 +322,7 @@ function AvatarWithImagePicker({ src={Expensicons.Camera} width={variables.iconSizeSmall} height={variables.iconSizeSmall} - fill={theme.inverse} + fill={theme.icon} /> diff --git a/src/styles/index.ts b/src/styles/index.ts index cfd9b797de0b..fc79c5ab7c02 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -2865,7 +2865,7 @@ const styles = (theme: ThemeColors) => smallEditIcon: { alignItems: 'center', - backgroundColor: theme.buttonHoveredBG, + backgroundColor: theme.buttonDefaultBG, borderColor: theme.appBG, borderRadius: 14, borderWidth: 3, From 7d04196f06df6954c1fcaddd1dd4326304427c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20Chrab=C4=85szczewski?= Date: Tue, 2 Jan 2024 10:32:48 +0100 Subject: [PATCH 087/130] fix: read output from fs --- .../validateReassureOutput/validateReassureOutput.js | 3 ++- .github/workflows/reassurePerformanceTests.yml | 7 ------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.js b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.js index da81d88c9885..214dc9e8b6d4 100644 --- a/.github/actions/javascript/validateReassureOutput/validateReassureOutput.js +++ b/.github/actions/javascript/validateReassureOutput/validateReassureOutput.js @@ -1,7 +1,8 @@ const core = require('@actions/core'); +const fs = require('fs'); const run = () => { - const regressionOutput = JSON.parse(core.getInput('REGRESSION_OUTPUT', {required: true})); + const regressionOutput = JSON.parse(fs.readFileSync('.reassure/output.json', 'utf8')); const countDeviation = core.getInput('COUNT_DEVIATION', {required: true}); const durationDeviation = core.getInput('DURATION_DEVIATION_PERCENTAGE', {required: true}); diff --git a/.github/workflows/reassurePerformanceTests.yml b/.github/workflows/reassurePerformanceTests.yml index c49530c46faa..116f178868c1 100644 --- a/.github/workflows/reassurePerformanceTests.yml +++ b/.github/workflows/reassurePerformanceTests.yml @@ -36,17 +36,10 @@ jobs: npm install --force npx reassure --branch - - name: Read output.json - id: reassure - uses: juliangruber/read-file-action@v1 - with: - path: .reassure/output.json - - name: Validate output.json id: validateReassureOutput uses: ./.github/actions/javascript/validateReassureOutput with: DURATION_DEVIATION_PERCENTAGE: 20 COUNT_DEVIATION: 0 - REGRESSION_OUTPUT: ${{ steps.reassure.outputs.content }} From 38fbed03b8e27f85681c479ed5b9759a1270f800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20Chrab=C4=85szczewski?= Date: Tue, 2 Jan 2024 10:50:27 +0100 Subject: [PATCH 088/130] fix: rebuild actions --- .github/actions/javascript/reviewerChecklist/index.js | 5 +---- .../actions/javascript/validateReassureOutput/index.js | 8 +++----- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/actions/javascript/reviewerChecklist/index.js b/.github/actions/javascript/reviewerChecklist/index.js index abebb67e8173..9f56aa85b3c8 100644 --- a/.github/actions/javascript/reviewerChecklist/index.js +++ b/.github/actions/javascript/reviewerChecklist/index.js @@ -1,6 +1,3 @@ -/** - * NOTE: This is a compiled file. DO NOT directly edit this file. - */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ @@ -19308,4 +19305,4 @@ getNumberOfItemsFromReviewerChecklist() module.exports = __webpack_exports__; /******/ })() -; +; \ No newline at end of file diff --git a/.github/actions/javascript/validateReassureOutput/index.js b/.github/actions/javascript/validateReassureOutput/index.js index 6cc59af1de48..49aca8bfc5c0 100644 --- a/.github/actions/javascript/validateReassureOutput/index.js +++ b/.github/actions/javascript/validateReassureOutput/index.js @@ -1,6 +1,3 @@ -/** - * NOTE: This is a compiled file. DO NOT directly edit this file. - */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ @@ -8,9 +5,10 @@ /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { const core = __nccwpck_require__(186); +const fs = __nccwpck_require__(147); const run = () => { - const regressionOutput = JSON.parse(core.getInput('REGRESSION_OUTPUT', {required: true})); + const regressionOutput = JSON.parse(fs.readFileSync('.reassure/output.json', 'utf8')); const countDeviation = core.getInput('COUNT_DEVIATION', {required: true}); const durationDeviation = core.getInput('DURATION_DEVIATION_PERCENTAGE', {required: true}); @@ -2878,4 +2876,4 @@ module.exports = require("util"); /******/ module.exports = __webpack_exports__; /******/ /******/ })() -; +; \ No newline at end of file From 52ae24a94ee104c50f5a7a4fae730a98b0825f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20Chrab=C4=85szczewski?= Date: Tue, 2 Jan 2024 10:57:43 +0100 Subject: [PATCH 089/130] fix: gh actions build --- .github/actions/javascript/reviewerChecklist/index.js | 5 ++++- .github/actions/javascript/validateReassureOutput/index.js | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/actions/javascript/reviewerChecklist/index.js b/.github/actions/javascript/reviewerChecklist/index.js index 9f56aa85b3c8..abebb67e8173 100644 --- a/.github/actions/javascript/reviewerChecklist/index.js +++ b/.github/actions/javascript/reviewerChecklist/index.js @@ -1,3 +1,6 @@ +/** + * NOTE: This is a compiled file. DO NOT directly edit this file. + */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ @@ -19305,4 +19308,4 @@ getNumberOfItemsFromReviewerChecklist() module.exports = __webpack_exports__; /******/ })() -; \ No newline at end of file +; diff --git a/.github/actions/javascript/validateReassureOutput/index.js b/.github/actions/javascript/validateReassureOutput/index.js index 49aca8bfc5c0..e70c379697cd 100644 --- a/.github/actions/javascript/validateReassureOutput/index.js +++ b/.github/actions/javascript/validateReassureOutput/index.js @@ -1,3 +1,6 @@ +/** + * NOTE: This is a compiled file. DO NOT directly edit this file. + */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ @@ -2876,4 +2879,4 @@ module.exports = require("util"); /******/ module.exports = __webpack_exports__; /******/ /******/ })() -; \ No newline at end of file +; From 1d80a240321e61d64a40cce879ea213f9caf9c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20Chrab=C4=85szczewski?= Date: Tue, 2 Jan 2024 11:04:48 +0100 Subject: [PATCH 090/130] fix: remove REGRESSION_OUTPUT from validateReassureOutput def --- .github/actions/javascript/validateReassureOutput/action.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/actions/javascript/validateReassureOutput/action.yml b/.github/actions/javascript/validateReassureOutput/action.yml index 4fd53e838fb5..b3b18c244a8f 100644 --- a/.github/actions/javascript/validateReassureOutput/action.yml +++ b/.github/actions/javascript/validateReassureOutput/action.yml @@ -7,9 +7,6 @@ inputs: COUNT_DEVIATION: description: Allowable deviation for the mean count in regression test results. required: true - REGRESSION_OUTPUT: - description: Refers to the results obtained from regression tests `.reassure/output.json`. - required: true runs: using: 'node20' main: './index.js' From 350f519f3dea9e31ac517a25a045b2925157159d Mon Sep 17 00:00:00 2001 From: DylanDylann Date: Tue, 2 Jan 2024 17:58:55 +0700 Subject: [PATCH 091/130] fix only allow admin to edit amount in distance request --- .../ReportActionItem/MoneyRequestView.js | 3 +-- src/libs/ReportUtils.ts | 24 +++++++++---------- src/pages/EditRequestPage.js | 9 ++----- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index efaa4aed9536..bc2c36534288 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -116,7 +116,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate const isSettled = ReportUtils.isSettled(moneyRequestReport.reportID); const isCancelled = moneyRequestReport && moneyRequestReport.isCancelledIOU; const canEdit = ReportUtils.canEditMoneyRequest(parentReportAction); - const canEditAmount = canEdit && !isSettled && !isCardTransaction; + const canEditAmount = ReportUtils.canEditMoneyRequest(parentReportAction, CONST.EDIT_REQUEST_FIELD.AMOUNT, transaction) && !isSettled && !isCardTransaction; const canEditReceipt = ReportUtils.canEditFieldOfMoneyRequest(parentReportAction, moneyRequestReport.reportID, CONST.EDIT_REQUEST_FIELD.RECEIPT); // A flag for verifying that the current report is a sub-report of a workspace chat @@ -174,7 +174,6 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate const pendingAction = lodashGet(transaction, 'pendingAction'); const getPendingFieldAction = (fieldPath) => lodashGet(transaction, fieldPath) || pendingAction; - const isAdmin = ReportUtils.isAdminOfMoneyRequestReport(moneyRequestReport); return ( diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 64a7dc7bae3d..f1830408593d 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1803,14 +1803,6 @@ function getTransactionDetails(transaction: OnyxEntry, createdDateF }; } -/** - * @param {Object} moneyRequestReport - * @returns {Boolean} - */ -function isAdminOfMoneyRequestReport(moneyRequestReport) { - return isExpenseReport(moneyRequestReport) && lodashGet(getPolicy(moneyRequestReport.policyID), 'role', '') === CONST.POLICY.ROLE.ADMIN; -} - /** * Can only edit if: * @@ -1820,7 +1812,7 @@ function isAdminOfMoneyRequestReport(moneyRequestReport) { * - the current user is the requestor and is not settled yet * - or the user is an admin on the policy the expense report is tied to */ -function canEditMoneyRequest(reportAction: OnyxEntry, fieldToEdit = ''): boolean { +function canEditMoneyRequest(reportAction: OnyxEntry, fieldToEdit = '', transaction?: OnyxEntry): boolean { const isDeleted = ReportActionsUtils.isDeletedAction(reportAction); if (isDeleted) { @@ -1847,11 +1839,14 @@ function canEditMoneyRequest(reportAction: OnyxEntry, fieldToEdit const isApproved = isReportApproved(moneyRequestReport); const isAdmin = isExpenseReport(moneyRequestReport) && (getPolicy(moneyRequestReport?.policyID ?? '')?.role ?? '') === CONST.POLICY.ROLE.ADMIN; const isRequestor = currentUserAccountID === reportAction?.actorAccountID; + const isDistanceRequest = !isEmpty(transaction) && TransactionUtils.isDistanceRequest(transaction); if (isAdmin && !isRequestor && fieldToEdit === CONST.EDIT_REQUEST_FIELD.RECEIPT) { return false; } - + if (isDistanceRequest && fieldToEdit === CONST.EDIT_REQUEST_FIELD.AMOUNT) { + return isAdmin; + } if (isAdmin) { return true; } @@ -1863,7 +1858,12 @@ function canEditMoneyRequest(reportAction: OnyxEntry, fieldToEdit * Checks if the current user can edit the provided property of a money request * */ -function canEditFieldOfMoneyRequest(reportAction: OnyxEntry, reportID: string, fieldToEdit: ValueOf): boolean { +function canEditFieldOfMoneyRequest( + reportAction: OnyxEntry, + reportID: string, + fieldToEdit: ValueOf, + transaction: OnyxEntry, +): boolean { // A list of fields that cannot be edited by anyone, once a money request has been settled const nonEditableFieldsWhenSettled: string[] = [ CONST.EDIT_REQUEST_FIELD.AMOUNT, @@ -1874,7 +1874,7 @@ function canEditFieldOfMoneyRequest(reportAction: OnyxEntry, repor ]; // Checks if this user has permissions to edit this money request - if (!canEditMoneyRequest(reportAction, fieldToEdit)) { + if (!canEditMoneyRequest(reportAction, fieldToEdit, transaction)) { return false; // User doesn't have permission to edit } diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index c1027dac915a..4dfa945f29a5 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -101,15 +101,10 @@ function EditRequestPage({report, route, parentReport, policyCategories, policyT // A flag for showing the tags page const shouldShowTags = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagList))); - const isAdmin = ReportUtils.isAdminOfMoneyRequestReport(report); - // Decides whether to allow or disallow editing a money request useEffect(() => { // Do not dismiss the modal, when a current user can edit this property of the money request. - if (ReportUtils.canEditFieldOfMoneyRequest(parentReportAction, parentReport.reportID, fieldToEdit)) { - return; - } - if (TransactionUtils.isDistanceRequest(transaction) ? isAdmin : true) { + if (ReportUtils.canEditFieldOfMoneyRequest(parentReportAction, parentReport.reportID, fieldToEdit, transaction)) { return; } @@ -117,7 +112,7 @@ function EditRequestPage({report, route, parentReport, policyCategories, policyT Navigation.isNavigationReady().then(() => { Navigation.dismissModal(); }); - }, [parentReportAction, parentReport.reportID, fieldToEdit, isAdmin, transaction]); + }, [parentReportAction, parentReport.reportID, fieldToEdit, transaction]); // Update the transaction object and close the modal function editMoneyRequest(transactionChanges) { From 0988d01418e564890dedbe85bea6002e70f73a4b Mon Sep 17 00:00:00 2001 From: DylanDylann Date: Tue, 2 Jan 2024 18:00:57 +0700 Subject: [PATCH 092/130] fix remove not related change --- src/components/MoneyRequestConfirmationList.js | 2 +- src/pages/iou/steps/NewRequestAmountPage.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.js b/src/components/MoneyRequestConfirmationList.js index 7aae6dc74354..b75f4e2df845 100755 --- a/src/components/MoneyRequestConfirmationList.js +++ b/src/components/MoneyRequestConfirmationList.js @@ -605,7 +605,7 @@ function MoneyRequestConfirmationList(props) { shouldShowRightIcon={!props.isReadOnly && !props.isDistanceRequest} title={formattedAmount} description={translate('iou.amount')} - interactive={!props.isReadOnly && !props.isDistanceRequest} + interactive={!props.isReadOnly} onPress={() => { if (props.isDistanceRequest) { return; diff --git a/src/pages/iou/steps/NewRequestAmountPage.js b/src/pages/iou/steps/NewRequestAmountPage.js index 834204f34974..1df74569e4c3 100644 --- a/src/pages/iou/steps/NewRequestAmountPage.js +++ b/src/pages/iou/steps/NewRequestAmountPage.js @@ -166,7 +166,7 @@ function NewRequestAmountPage({route, iou, report, selectedTab}) { testID={NewRequestAmountPage.displayName} > {({safeAreaPaddingBottomStyle}) => ( - + Date: Tue, 2 Jan 2024 18:07:51 +0700 Subject: [PATCH 093/130] fix lint --- src/pages/EditRequestPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index 4dfa945f29a5..e41f30779f22 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -112,7 +112,7 @@ function EditRequestPage({report, route, parentReport, policyCategories, policyT Navigation.isNavigationReady().then(() => { Navigation.dismissModal(); }); - }, [parentReportAction, parentReport.reportID, fieldToEdit, transaction]); + }, [parentReportAction, parentReport.reportID, fieldToEdit, transaction]); // Update the transaction object and close the modal function editMoneyRequest(transactionChanges) { From 6173899235de6994ed73816d29ac71414817a937 Mon Sep 17 00:00:00 2001 From: Yauheni Pasiukevich Date: Tue, 2 Jan 2024 14:13:24 +0100 Subject: [PATCH 094/130] [TS migration] Follow-up: add default props from modal to PopoverWithMeasuredContent --- src/components/PopoverWithMeasuredContent.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/components/PopoverWithMeasuredContent.tsx b/src/components/PopoverWithMeasuredContent.tsx index 9d10f7869f8a..7a17045105ee 100644 --- a/src/components/PopoverWithMeasuredContent.tsx +++ b/src/components/PopoverWithMeasuredContent.tsx @@ -34,6 +34,12 @@ function PopoverWithMeasuredContent({ }, children, withoutOverlay = false, + fullscreen = true, + shouldCloseOnOutsideClick = false, + shouldSetModalVisibility = true, + statusBarTranslucent = true, + avoidKeyboard = false, + hideModalContentWhileAnimating = false, ...props }: PopoverWithMeasuredContentProps) { const styles = useThemeStyles(); @@ -113,6 +119,12 @@ function PopoverWithMeasuredContent({ anchorAlignment={anchorAlignment} isVisible={isVisible} withoutOverlay={withoutOverlay} + fullscreen={fullscreen} + shouldCloseOnOutsideClick={shouldCloseOnOutsideClick} + shouldSetModalVisibility={shouldSetModalVisibility} + statusBarTranslucent={statusBarTranslucent} + avoidKeyboard={avoidKeyboard} + hideModalContentWhileAnimating={hideModalContentWhileAnimating} // eslint-disable-next-line react/jsx-props-no-spreading {...props} anchorPosition={shiftedAnchorPosition} From 8b55c63e071a6d3eab98679b59572ec9d104807e Mon Sep 17 00:00:00 2001 From: dukenv0307 Date: Wed, 3 Jan 2024 13:32:34 +0700 Subject: [PATCH 095/130] remove error in optimistic data when editting task --- src/libs/actions/Task.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/actions/Task.js b/src/libs/actions/Task.js index 678e1fb967dd..3e1a29659ee2 100644 --- a/src/libs/actions/Task.js +++ b/src/libs/actions/Task.js @@ -392,6 +392,7 @@ function editTask(report, {title, description}) { ...(title && {reportName: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), ...(description && {description: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), }, + errorFields: null, }, }, ]; From cf21461af15346944e8bf6d70f5682083fb5cef8 Mon Sep 17 00:00:00 2001 From: Krishna Gupta Date: Wed, 3 Jan 2024 13:46:14 +0530 Subject: [PATCH 096/130] minor fix. Signed-off-by: Krishna Gupta --- .../HTMLEngineProvider/HTMLRenderers/PreRenderer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js b/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js index 948dec6757f7..27eff02d63ea 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/PreRenderer.js @@ -48,10 +48,10 @@ function PreRenderer(props) { role={CONST.ROLE.PRESENTATION} accessibilityLabel={props.translate('accessibilityHints.prestyledText')} > - {/* */} - {/* eslint-disable-next-line react/jsx-props-no-spreading */} - - {/* */} + + {/* eslint-disable-next-line react/jsx-props-no-spreading */} + + )} From 9e2ceabe9ec75a465a61c42b1ec53372898306c9 Mon Sep 17 00:00:00 2001 From: Pujan Date: Wed, 3 Jan 2024 21:41:37 +0530 Subject: [PATCH 097/130] iou report action failure data changes --- src/libs/actions/IOU.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index d2dfcb166eeb..f375d0cb52e8 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -922,6 +922,15 @@ function getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, t [updatedReportAction.reportActionID]: updatedReportAction, }, }); + failureData.push({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${transactionThread.reportID}`, + value: { + [updatedReportAction.reportActionID]: { + errors: ErrorUtils.getMicroSecondOnyxError('iou.error.genericEditFailureMessage'), + }, + }, + }) // Step 4: Compute the IOU total and update the report preview message (and report header) so LHN amount owed is correct. // Should only update if the transaction matches the currency of the report, else we wait for the update From 923db7fecfd1e5625d0048a90fc42e567a19e1f0 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 18:54:00 +0100 Subject: [PATCH 098/130] adapt eslint rules --- .eslintrc.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index 5c23c7be0839..54d035ab3850 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -171,6 +171,21 @@ module.exports = { '@typescript-eslint/switch-exhaustiveness-check': 'error', '@typescript-eslint/consistent-type-definitions': ['error', 'type'], '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/consistent-type-imports': [ + 'error', + { + prefer: 'type-imports', + fixStyle: 'separate-type-imports', + }, + ], + '@typescript-eslint/no-import-type-side-effects': 'error', + '@typescript-eslint/consistent-type-exports': [ + 'error', + { + fixMixedExportsWithInlineTypeSpecifier: false, + }, + ], + 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], 'es/no-nullish-coalescing-operators': 'off', 'es/no-optional-chaining': 'off', 'valid-jsdoc': 'off', From a0cbc39ca9521a0339054ab94815d0ce1aa84495 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 18:54:07 +0100 Subject: [PATCH 099/130] fix: global.d.ts --- src/types/global.d.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/types/global.d.ts b/src/types/global.d.ts index d220f33889d2..a3326ed4d008 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -1,24 +1,28 @@ declare module '*.png' { - const value: import('react-native').ImageSourcePropType; + import type {ImageSourcePropType} from 'react-native'; + + const value: ImageSourcePropType; export default value; } declare module '*.jpg' { - const value: import('react-native').ImageSourcePropType; + import type {ImageSourcePropType} from 'react-native'; + + const value: ImageSourcePropType; export default value; } declare module '*.svg' { - import React from 'react'; - import {SvgProps} from 'react-native-svg'; + import type React from 'react'; + import type {SvgProps} from 'react-native-svg'; - const content: React.FC | import('react-native').ImageSourcePropType; + const content: React.FC; export default content; } declare module '*.lottie' { - const value: import('lottie-react-native').LottieViewProps.source; + import type {LottieViewProps} from 'lottie-react-native'; + + const value: LottieViewProps['source']; export default value; } - -declare module 'react-native-device-info/jest/react-native-device-info-mock'; From d4ef6ca7951c10e3f5995498c5a64737cf8eb763 Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Wed, 3 Jan 2024 14:54:13 -0300 Subject: [PATCH 100/130] Move location bias calculation to hook and use it on edit --- src/hooks/useLocationBias.ts | 52 +++++++++++++++++ src/pages/iou/WaypointEditor.js | 19 ++++++- .../request/step/IOURequestStepWaypoint.js | 57 +------------------ 3 files changed, 72 insertions(+), 56 deletions(-) create mode 100644 src/hooks/useLocationBias.ts diff --git a/src/hooks/useLocationBias.ts b/src/hooks/useLocationBias.ts new file mode 100644 index 000000000000..3f1adfbae8c5 --- /dev/null +++ b/src/hooks/useLocationBias.ts @@ -0,0 +1,52 @@ +import {useMemo} from 'react'; + +/** + * Construct the rectangular boundary based on user location and waypoints + */ +export default function useLocationBias(allWaypoints: Record, userLocation?: {latitude: number, longitude: number}) { + return useMemo(() => { + const hasFilledWaypointCount = Object.values(allWaypoints).some((waypoint) => Object.keys(waypoint).length > 0); + // If there are no filled wayPoints and if user's current location cannot be retrieved, + // it is futile to arrive at a biased location. Let's return + if (!hasFilledWaypointCount && userLocation === undefined) { + return null; + } + + // Gather the longitudes and latitudes from filled waypoints. + const longitudes: number[] = Object.values(allWaypoints).reduce((accum: number[], waypoint) => { + if (waypoint?.lng) { + accum.push(waypoint.lng); + } + return accum; + }, []); + const latitudes: number[] = Object.values(allWaypoints).reduce((accum: number[], waypoint) => { + if (waypoint?.lat) { + accum.push(waypoint.lat); + } + return accum; + }, []); + + // When no filled waypoints are available but the current location of the user is available, + // let us consider the current user's location to construct a rectangular bound + if (!hasFilledWaypointCount && userLocation !== undefined) { + longitudes.push(userLocation.longitude); + latitudes.push(userLocation.latitude); + } + + // Extend the rectangular bound by 0.5 degree (roughly around 25-30 miles in US) + const minLat = Math.min(...latitudes) - 0.5; + const minLng = Math.min(...longitudes) - 0.5; + const maxLat = Math.max(...latitudes) + 0.5; + const maxLng = Math.max(...longitudes) + 0.5; + + // Ensuring coordinates do not go out of range. + const south = minLat > -90 ? minLat : -90; + const west = minLng > -180 ? minLng : -180; + const north = maxLat < 90 ? maxLat : 90; + const east = maxLng < 180 ? maxLng : 180; + + // Format: rectangle:south,west|north,east + const rectFormat = `rectangle:${south},${west}|${north},${east}`; + return rectFormat; + }, [userLocation, allWaypoints]); +} diff --git a/src/pages/iou/WaypointEditor.js b/src/pages/iou/WaypointEditor.js index e8d3c8520ca8..41629119c4c3 100644 --- a/src/pages/iou/WaypointEditor.js +++ b/src/pages/iou/WaypointEditor.js @@ -15,6 +15,7 @@ import ScreenWrapper from '@components/ScreenWrapper'; import transactionPropTypes from '@components/transactionPropTypes'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; +import useLocationBias from '@hooks/useLocationBias'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import * as ErrorUtils from '@libs/ErrorUtils'; @@ -43,6 +44,15 @@ const propTypes = { }), }), + /* Current location coordinates of the user */ + userLocation: PropTypes.shape({ + /** Latitude of the location */ + latitude: PropTypes.number, + + /** Longitude of the location */ + longitude: PropTypes.number, + }), + recentWaypoints: PropTypes.arrayOf( PropTypes.shape({ /** The name of the location */ @@ -74,9 +84,10 @@ const defaultProps = { route: {}, recentWaypoints: [], transaction: {}, + userLocation: undefined, }; -function WaypointEditor({route: {params: {iouType = '', transactionID = '', waypointIndex = '', threadReportID = 0}} = {}, transaction, recentWaypoints}) { +function WaypointEditor({route: {params: {iouType = '', transactionID = '', waypointIndex = '', threadReportID = 0}} = {}, transaction, recentWaypoints, userLocation}) { const styles = useThemeStyles(); const {windowWidth} = useWindowDimensions(); const [isDeleteStopModalOpen, setIsDeleteStopModalOpen] = useState(false); @@ -91,7 +102,7 @@ function WaypointEditor({route: {params: {iouType = '', transactionID = '', wayp const waypointCount = _.size(allWaypoints); const filledWaypointCount = _.size(_.filter(allWaypoints, (waypoint) => !_.isEmpty(waypoint))); - + const locationBias = useLocationBias(allWaypoints, userLocation); const waypointDescriptionKey = useMemo(() => { switch (parsedWaypointIndex) { case 0: @@ -221,6 +232,7 @@ function WaypointEditor({route: {params: {iouType = '', transactionID = '', wayp > (textInput.current = e)} @@ -254,6 +266,9 @@ WaypointEditor.displayName = 'WaypointEditor'; WaypointEditor.propTypes = propTypes; WaypointEditor.defaultProps = defaultProps; export default withOnyx({ + userLocation: { + key: ONYXKEYS.USER_LOCATION, + }, transaction: { key: ({route}) => `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(route, 'params.transactionID')}`, }, diff --git a/src/pages/iou/request/step/IOURequestStepWaypoint.js b/src/pages/iou/request/step/IOURequestStepWaypoint.js index 73d5b37e72ee..3538fd55ba19 100644 --- a/src/pages/iou/request/step/IOURequestStepWaypoint.js +++ b/src/pages/iou/request/step/IOURequestStepWaypoint.js @@ -1,6 +1,5 @@ import {useNavigation} from '@react-navigation/native'; import lodashGet from 'lodash/get'; -import lodashIsNil from 'lodash/isNil'; import PropTypes from 'prop-types'; import React, {useMemo, useRef, useState} from 'react'; import {View} from 'react-native'; @@ -17,6 +16,7 @@ import ScreenWrapper from '@components/ScreenWrapper'; import transactionPropTypes from '@components/transactionPropTypes'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; +import useLocationBias from '@hooks/useLocationBias'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import compose from '@libs/compose'; @@ -97,7 +97,7 @@ function IOURequestStepWaypoint({ const parsedWaypointIndex = parseInt(pageIndex, 10); const allWaypoints = lodashGet(transaction, 'comment.waypoints', {}); const currentWaypoint = lodashGet(allWaypoints, `waypoint${pageIndex}`, {}); - + console.log('allwaypoints', allWaypoints); const waypointCount = _.size(allWaypoints); const filledWaypointCount = _.size(_.filter(allWaypoints, (waypoint) => !_.isEmpty(waypoint))); @@ -112,58 +112,7 @@ function IOURequestStepWaypoint({ } }, [parsedWaypointIndex, waypointCount]); - // Construct the rectangular boundary based on user location and waypoints - const locationBias = useMemo(() => { - // If there are no filled wayPoints and if user's current location cannot be retrieved, - // it is futile to arrive at a biased location. Let's return - if (filledWaypointCount === 0 && _.isEmpty(userLocation)) { - return null; - } - - // Gather the longitudes and latitudes from filled waypoints. - const longitudes = _.filter( - _.map(allWaypoints, (waypoint) => { - if (!waypoint || lodashIsNil(waypoint.lng)) { - return; - } - return waypoint.lng; - }), - (lng) => lng, - ); - const latitudes = _.filter( - _.map(allWaypoints, (waypoint) => { - if (!waypoint || lodashIsNil(waypoint.lat)) { - return; - } - return waypoint.lat; - }), - (lat) => lat, - ); - - // When no filled waypoints are available but the current location of the user is available, - // let us consider the current user's location to construct a rectangular bound - if (filledWaypointCount === 0 && !_.isEmpty(userLocation)) { - longitudes.push(userLocation.longitude); - latitudes.push(userLocation.latitude); - } - - // Extend the rectangular bound by 0.5 degree (roughly around 25-30 miles in US) - const minLat = Math.min(...latitudes) - 0.5; - const minLng = Math.min(...longitudes) - 0.5; - const maxLat = Math.max(...latitudes) + 0.5; - const maxLng = Math.max(...longitudes) + 0.5; - - // Ensuring coordinates do not go out of range. - const south = minLat > -90 ? minLat : -90; - const west = minLng > -180 ? minLng : -180; - const north = maxLat < 90 ? maxLat : 90; - const east = maxLng < 180 ? maxLng : 180; - - // Format: rectangle:south,west|north,east - const rectFormat = `rectangle:${south},${west}|${north},${east}`; - return rectFormat; - }, [userLocation, filledWaypointCount, allWaypoints]); - + const locationBias = useLocationBias(allWaypoints, userLocation); const waypointAddress = lodashGet(currentWaypoint, 'address', ''); // Hide the menu when there is only start and finish waypoint const shouldShowThreeDotsButton = waypointCount > 2; From b36f281f4897b1ca6bd87836227827e4c219f813 Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Wed, 3 Jan 2024 15:01:29 -0300 Subject: [PATCH 101/130] Remove console.log --- src/pages/iou/request/step/IOURequestStepWaypoint.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/iou/request/step/IOURequestStepWaypoint.js b/src/pages/iou/request/step/IOURequestStepWaypoint.js index 3538fd55ba19..0ecba1cb004f 100644 --- a/src/pages/iou/request/step/IOURequestStepWaypoint.js +++ b/src/pages/iou/request/step/IOURequestStepWaypoint.js @@ -97,7 +97,6 @@ function IOURequestStepWaypoint({ const parsedWaypointIndex = parseInt(pageIndex, 10); const allWaypoints = lodashGet(transaction, 'comment.waypoints', {}); const currentWaypoint = lodashGet(allWaypoints, `waypoint${pageIndex}`, {}); - console.log('allwaypoints', allWaypoints); const waypointCount = _.size(allWaypoints); const filledWaypointCount = _.size(_.filter(allWaypoints, (waypoint) => !_.isEmpty(waypoint))); From 62c85a1d6a5cd94dbe0593a0b1c03a63c81db51e Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 19:04:52 +0100 Subject: [PATCH 102/130] add TS_STYLE update --- contributingGuides/TS_STYLE.md | 39 +++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/contributingGuides/TS_STYLE.md b/contributingGuides/TS_STYLE.md index a583941bf71d..b60c28147a45 100644 --- a/contributingGuides/TS_STYLE.md +++ b/contributingGuides/TS_STYLE.md @@ -26,6 +26,7 @@ - [1.19 Satisfies operator](#satisfies-operator) - [1.20 Hooks instead of HOCs](#hooks-instead-of-hocs) - [1.21 `compose` usage](#compose-usage) + - [1.22 Type imports](#type-imports) - [Exception to Rules](#exception-to-rules) - [Communication Items](#communication-items) - [Migration Guidelines](#migration-guidelines) @@ -383,7 +384,7 @@ type Foo = { -- [1.15](#file-organization) **File organization**: In modules with platform-specific implementations, create `types.ts` to define shared types. Import and use shared types in each platform specific files. Do not use [`satisfies` operator](#satisfies-operator) for platform-specific implementations, always define shared types that complies with all variants. +- [1.15](#file-organization) **File organization**: In modules with platform-specific implementations, create `types.ts` to define shared types. Import and use shared types in each platform specific files. Do not use [`satisfies` operator](#satisfies-operator) for platform-specific implementations, always define shared types that complies with all variants. > Why? To encourage consistent API across platform-specific implementations. If you're migrating module that doesn't have a default implement (i.e. `index.ts`, e.g. `getPlatform`), refer to [Migration Guidelines](#migration-guidelines) for further information. @@ -514,7 +515,7 @@ type Foo = { - [1.20](#hooks-instead-of-hocs) **Hooks instead of HOCs**: Replace HOCs usage with Hooks whenever possible. - + > Why? Hooks are easier to use (can be used inside the function component), and don't need nesting or `compose` when exporting the component. It also allows us to remove `compose` completely in some components since it has been bringing up some issues with TypeScript. Read the [`compose` usage](#compose-usage) section for further information about the TypeScript issues with `compose`. > Note: Because Onyx doesn't provide a hook yet, in a component that accesses Onyx data with `withOnyx` HOC, please make sure that you don't use other HOCs (if applicable) to avoid HOC nesting. @@ -571,7 +572,7 @@ type Foo = { - [1.21](#compose-usage) **`compose` usage**: Avoid the usage of `compose` function to compose HOCs in TypeScript files. Use nesting instead. - + > Why? `compose` function doesn't work well with TypeScript when dealing with several HOCs being used in a component, many times resulting in wrong types and errors. Instead, nesting can be used to allow a seamless use of multiple HOCs and result in a correct return type of the compoment. Also, you can use [hooks instead of HOCs](#hooks-instead-of-hocs) whenever possible to minimize or even remove the need of HOCs in the component. ```ts @@ -607,6 +608,38 @@ type Foo = { export default withCurrentUserPersonalDetails(ComponentWithReportOrNotFound); ``` + + +- [1.22](#type-imports) **Type imports/exports**: Always use the `type` keyword when importing/exporting types + + > Why? In order to improve code clarity and consistency and reduce bundle size after typescript transpilation, we enforce the all type imports/exports to contain the `type` keyword. This way, TypeScript can automatically remove those imports from the transpiled JavaScript bundle + + Imports: + ```ts + // BAD + import {SomeType} from './a' + import someVariable from './a' + + import {someVariable, SomeOtherType} from './b' + + // GOOD + import type {SomeType} from './a' + import someVariable from './a' + ``` + + Exports: + ```ts + // BAD + export {SomeType} + export someVariable + // or + export {someVariable, SomeOtherType} + + // GOOD + export type {SomeType} + export someVariable + ``` + ## Exception to Rules Most of the rules are enforced in ESLint or checked by TypeScript. If you think your particular situation warrants an exception, post the context in the `#expensify-open-source` Slack channel with your message prefixed with `TS EXCEPTION:`. The internal engineer assigned to the PR should be the one that approves each exception, however all discussion regarding granting exceptions should happen in the public channel instead of the GitHub PR page so that the TS migration team can access them easily. From 82b76c1a36cf1a01b00c14510a5812a591e7f2fd Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 19:04:58 +0100 Subject: [PATCH 103/130] add lint changes --- .../authorChecklist/categories/index.ts | 2 +- .../categories/newComponentCategory.ts | 2 +- assets/emojis/common.ts | 2 +- assets/emojis/en.ts | 2 +- assets/emojis/es.ts | 2 +- assets/emojis/index.ts | 2 +- assets/emojis/types.ts | 2 +- src/CONFIG.ts | 3 +- src/ONYXKEYS.ts | 10 +- src/ROUTES.ts | 4 +- src/SCREENS.ts | 2 +- .../BaseAnchorForCommentsOnly.tsx | 3 +- src/components/AnchorForCommentsOnly/types.ts | 4 +- .../AnimatedStep/AnimatedStepContext.ts | 7 +- .../AnimatedStep/AnimatedStepProvider.tsx | 5 +- src/components/AnimatedStep/index.tsx | 6 +- .../AnimatedStep/useAnimatedStepContext.ts | 3 +- src/components/AnonymousReportFooter.tsx | 6 +- src/components/ArchivedReportFooter.tsx | 3 +- .../BaseAutoCompleteSuggestions.tsx | 5 +- .../AutoCompleteSuggestions/types.ts | 2 +- src/components/AutoUpdateTime.tsx | 5 +- src/components/Avatar.tsx | 7 +- src/components/AvatarWithDisplayName.tsx | 7 +- src/components/Badge.tsx | 3 +- src/components/Banner.tsx | 3 +- src/components/BaseMiniContextMenuItem.tsx | 6 +- src/components/BlockingViews/BlockingView.tsx | 7 +- .../BlockingViews/FullPageNotFoundView.tsx | 2 +- .../FullPageOfflineBlockingView.tsx | 2 +- src/components/Breadcrumbs.tsx | 3 +- src/components/Button/index.tsx | 10 +- .../validateSubmitShortcut/index.native.ts | 2 +- .../Button/validateSubmitShortcut/index.ts | 2 +- .../Button/validateSubmitShortcut/types.ts | 2 +- src/components/CardPreview.tsx | 5 +- src/components/Checkbox.tsx | 8 +- src/components/CheckboxWithLabel.tsx | 6 +- .../Collapsible/index.native.tsx | 2 +- .../CollapsibleSection/Collapsible/index.tsx | 2 +- .../CollapsibleSection/Collapsible/types.ts | 2 +- src/components/CollapsibleSection/index.tsx | 2 +- src/components/ComposeProviders.tsx | 5 +- src/components/Composer/index.android.tsx | 8 +- src/components/Composer/index.ios.tsx | 8 +- src/components/Composer/index.tsx | 10 +- src/components/Composer/types.ts | 2 +- src/components/ConfirmContent.tsx | 8 +- src/components/ConfirmationPage.tsx | 2 +- src/components/CopyTextToClipboard.tsx | 2 +- .../index.tsx | 2 +- src/components/CurrentWalletBalance.tsx | 7 +- src/components/CustomDevMenu/index.native.tsx | 2 +- src/components/CustomDevMenu/index.tsx | 2 +- src/components/CustomDevMenu/types.ts | 2 +- .../index.website.ts | 2 +- .../updateGlobalBackgroundColor/types.ts | 2 +- .../index.android.ts | 2 +- .../updateStatusBarAppearance/index.ios.ts | 2 +- .../updateStatusBarAppearance/index.ts | 2 +- .../updateStatusBarAppearance/types.ts | 2 +- .../DeeplinkRedirectLoadingIndicator.tsx | 5 +- src/components/DeeplinkWrapper/index.tsx | 2 +- .../DeeplinkWrapper/index.website.tsx | 2 +- src/components/DeeplinkWrapper/types.ts | 2 +- .../DisplayNames/DisplayNamesTooltipItem.tsx | 7 +- .../DisplayNames/DisplayNamesWithTooltip.tsx | 5 +- .../DisplayNamesWithoutTooltip.tsx | 2 +- src/components/DisplayNames/index.native.tsx | 2 +- src/components/DisplayNames/index.tsx | 2 +- src/components/DisplayNames/types.ts | 2 +- .../DistanceMapView/index.android.tsx | 2 +- src/components/DistanceMapView/index.tsx | 2 +- src/components/DistanceMapView/types.ts | 2 +- src/components/DotIndicatorMessage.tsx | 3 +- src/components/DragAndDrop/Consumer/types.ts | 2 +- .../DragAndDrop/NoDropZone/types.ts | 2 +- src/components/DragAndDrop/Provider/types.ts | 2 +- src/components/DraggableList/index.native.tsx | 2 +- src/components/DraggableList/index.tsx | 3 +- src/components/EmojiSuggestions.tsx | 3 +- .../ErrorBoundary/BaseErrorBoundary.tsx | 2 +- src/components/ErrorBoundary/index.native.tsx | 2 +- src/components/ErrorBoundary/index.tsx | 2 +- src/components/ExpensifyWordmark.tsx | 3 +- src/components/FixedFooter.tsx | 6 +- src/components/FlatList/index.android.tsx | 6 +- src/components/FormAlertWithSubmitButton.tsx | 3 +- src/components/FormAlertWrapper.tsx | 8 +- src/components/FormElement.tsx | 6 +- src/components/FormHelpMessage.tsx | 3 +- src/components/FormScrollView.tsx | 6 +- src/components/FormSubmit/index.native.tsx | 2 +- src/components/FormSubmit/index.tsx | 5 +- src/components/FormSubmit/types.ts | 5 +- src/components/FullscreenLoadingIndicator.tsx | 3 +- src/components/Header.tsx | 6 +- src/components/HeaderGap/types.ts | 4 +- src/components/HeaderWithBackButton/index.tsx | 2 +- src/components/HeaderWithBackButton/types.ts | 4 +- src/components/Hoverable/index.native.tsx | 2 +- src/components/Hoverable/index.tsx | 5 +- src/components/Hoverable/types.ts | 2 +- src/components/IFrame.tsx | 5 +- src/components/Icon/BankIcons/index.native.ts | 5 +- src/components/Icon/BankIcons/index.ts | 7 +- src/components/Icon/BankIconsUtils.ts | 6 +- .../Icon/IconWrapperStyles/index.ios.ts | 2 +- .../Icon/IconWrapperStyles/index.ts | 2 +- src/components/Icon/index.tsx | 7 +- src/components/ImageSVG/index.native.tsx | 4 +- src/components/ImageSVG/index.tsx | 4 +- src/components/ImageSVG/types.ts | 6 +- src/components/ImageWithSizeCalculation.tsx | 3 +- src/components/Indicator.tsx | 5 +- .../InlineCodeBlock/WrappedText.tsx | 3 +- src/components/InlineCodeBlock/types.ts | 2 +- .../InvertedFlatList/BaseInvertedFlatList.tsx | 5 +- .../CellRendererComponent.tsx | 3 +- .../InvertedFlatList/index.native.tsx | 5 +- src/components/InvertedFlatList/index.tsx | 6 +- .../KeyboardAvoidingView/index.ios.tsx | 2 +- src/components/KeyboardAvoidingView/index.tsx | 2 +- src/components/LinearGradient/index.native.ts | 2 +- src/components/LinearGradient/index.ts | 2 +- src/components/LinearGradient/types.ts | 2 +- src/components/LocaleContextProvider.tsx | 10 +- src/components/LocalePicker.tsx | 3 +- .../BaseLocationErrorMessage.tsx | 2 +- .../LocationErrorMessage/index.native.tsx | 2 +- src/components/LocationErrorMessage/index.tsx | 2 +- src/components/Lottie/index.tsx | 8 +- src/components/LottieAnimations/index.tsx | 2 +- src/components/LottieAnimations/types.ts | 2 +- src/components/MapView/Direction.tsx | 2 +- src/components/MapView/Direction.website.tsx | 2 +- src/components/MapView/MapView.tsx | 7 +- src/components/MapView/MapView.website.tsx | 7 +- src/components/MapView/MapViewTypes.ts | 2 +- src/components/MapView/PendingMapView.tsx | 2 +- src/components/MapView/types.ts | 6 +- src/components/MentionSuggestions.tsx | 2 +- src/components/MenuItem.tsx | 20 +-- src/components/MenuItemWithTopDescription.tsx | 5 +- src/components/MessagesRow.tsx | 5 +- src/components/Modal/BaseModal.tsx | 2 +- src/components/Modal/index.android.tsx | 2 +- src/components/Modal/index.ios.tsx | 2 +- src/components/Modal/index.tsx | 2 +- src/components/Modal/types.ts | 10 +- src/components/MoneyReportHeaderStatusBar.tsx | 2 +- src/components/MultipleAvatars.tsx | 7 +- src/components/OfflineIndicator.tsx | 3 +- src/components/OfflineWithFeedback.tsx | 7 +- src/components/OpacityView.tsx | 5 +- src/components/OptionRow.tsx | 3 +- src/components/ParentNavigationSubtitle.tsx | 4 +- src/components/Picker/BasePicker.tsx | 6 +- src/components/Picker/index.native.tsx | 5 +- src/components/Picker/index.tsx | 3 +- src/components/Picker/types.ts | 4 +- src/components/PlaidLink/index.native.tsx | 5 +- src/components/PlaidLink/index.tsx | 5 +- src/components/PlaidLink/types.ts | 4 +- src/components/Popover/index.native.tsx | 2 +- src/components/Popover/index.tsx | 2 +- src/components/Popover/types.ts | 7 +- src/components/PopoverMenu.tsx | 3 +- .../PopoverProvider/index.native.tsx | 2 +- src/components/PopoverProvider/index.tsx | 2 +- src/components/PopoverWithMeasuredContent.tsx | 5 +- .../PopoverWithoutOverlay/index.tsx | 5 +- src/components/PopoverWithoutOverlay/types.ts | 6 +- .../GenericPressable/BaseGenericPressable.tsx | 9 +- .../GenericPressable/index.native.tsx | 3 +- .../Pressable/GenericPressable/index.tsx | 5 +- .../Pressable/GenericPressable/types.ts | 10 +- .../Pressable/PressableWithDelayToggle.tsx | 7 +- .../Pressable/PressableWithFeedback.tsx | 7 +- .../Pressable/PressableWithoutFeedback.tsx | 3 +- .../Pressable/PressableWithoutFocus.tsx | 4 +- .../index.native.tsx | 9 +- .../index.tsx | 6 +- .../types.ts | 2 +- src/components/QRCode.tsx | 5 +- src/components/RNTextInput.tsx | 9 +- src/components/RadioButtonWithLabel.tsx | 6 +- .../ReportActionItem/MoneyReportView.tsx | 3 +- .../ReportActionItem/RenameAction.tsx | 3 +- src/components/ReportWelcomeText.tsx | 3 +- src/components/SafeArea/index.ios.tsx | 2 +- src/components/SafeArea/index.tsx | 2 +- src/components/SafeArea/types.ts | 2 +- .../SafeAreaConsumer/index.android.tsx | 2 +- src/components/SafeAreaConsumer/index.tsx | 2 +- src/components/SafeAreaConsumer/types.ts | 4 +- src/components/ScrollViewWithContext.tsx | 6 +- src/components/Search.tsx | 3 +- src/components/SectionList/index.android.tsx | 2 +- src/components/SectionList/index.tsx | 2 +- src/components/SectionList/types.ts | 4 +- src/components/SelectCircle.tsx | 3 +- .../SignInPageForm/index.native.tsx | 2 +- src/components/SignInPageForm/index.tsx | 4 +- src/components/SignInPageForm/types.ts | 2 +- src/components/SingleChoiceQuestion.tsx | 8 +- src/components/SingleOptionSelector.tsx | 2 +- .../index.native.tsx | 2 +- .../SkeletonViewContentLoader/index.tsx | 2 +- .../SkeletonViewContentLoader/types.ts | 4 +- src/components/SpacerView.tsx | 2 +- .../SplashScreenHider/index.native.tsx | 3 +- src/components/SplashScreenHider/types.ts | 2 +- src/components/SubscriptAvatar.tsx | 4 +- src/components/SwipeableView/index.native.tsx | 2 +- src/components/SwipeableView/index.tsx | 2 +- src/components/SwipeableView/types.ts | 2 +- src/components/TabSelector/TabIcon.tsx | 2 +- src/components/TabSelector/TabSelector.tsx | 10 +- .../TabSelector/TabSelectorItem.tsx | 2 +- src/components/TaskHeaderActionButton.tsx | 5 +- src/components/TestToolMenu.tsx | 7 +- src/components/TestToolsModal.tsx | 3 +- src/components/Text.tsx | 9 +- .../TextInput/BaseTextInput/index.native.tsx | 7 +- .../TextInput/BaseTextInput/index.tsx | 7 +- .../TextInput/BaseTextInput/types.ts | 2 +- .../TextInput/TextInputLabel/index.tsx | 3 +- .../TextInput/TextInputLabel/types.ts | 2 +- src/components/TextLink.tsx | 8 +- src/components/TextWithEllipsis/index.tsx | 3 +- src/components/ThemeProvider.tsx | 2 +- src/components/ThumbnailImage.tsx | 3 +- .../TimePicker/setCursorPosition/index.ios.ts | 2 +- .../TimePicker/setCursorPosition/index.ts | 2 +- .../TimePicker/setCursorPosition/types.ts | 4 +- .../Tooltip/BaseTooltip/index.native.tsx | 2 +- src/components/Tooltip/BaseTooltip/index.tsx | 5 +- .../Tooltip/PopoverAnchorTooltip.tsx | 4 +- .../Tooltip/TooltipRenderedOnPageBody.tsx | 2 +- src/components/Tooltip/index.tsx | 2 +- src/components/Tooltip/types.ts | 2 +- .../ValidateCode/ValidateCodeModal.tsx | 5 +- src/components/WalletSection.tsx | 4 +- .../WalletStatementModal/index.native.tsx | 5 +- src/components/WalletStatementModal/types.ts | 2 +- src/components/createOnyxContext.tsx | 7 +- src/components/withCurrentReportID.tsx | 5 +- .../withCurrentUserPersonalDetails.tsx | 6 +- src/components/withEnvironment.tsx | 5 +- src/components/withKeyboardState.tsx | 5 +- src/components/withLocalize.tsx | 6 +- src/components/withNavigation.tsx | 8 +- src/components/withNavigationFallback.tsx | 7 +- src/components/withNavigationFocus.tsx | 3 +- src/components/withStyleUtils.tsx | 5 +- src/components/withTheme.tsx | 5 +- src/components/withThemeStyles.tsx | 5 +- src/components/withToggleVisibilityView.tsx | 5 +- src/components/withViewportOffsetTop.tsx | 3 +- .../withWindowDimensions/index.native.tsx | 7 +- src/components/withWindowDimensions/index.tsx | 7 +- src/components/withWindowDimensions/types.ts | 2 +- src/hooks/useActiveElement/index.native.ts | 2 +- src/hooks/useActiveElement/index.ts | 2 +- src/hooks/useAppFocusEvent/index.native.ts | 2 +- src/hooks/useAppFocusEvent/index.ts | 2 +- src/hooks/useAutoFocusInput.ts | 3 +- src/hooks/useCurrentReportID.tsx | 3 +- src/hooks/useDebounce.ts | 2 +- .../useDefaultDragAndDrop/index.native.ts | 2 +- src/hooks/useDefaultDragAndDrop/index.ts | 2 +- src/hooks/useDelayedInputFocus.ts | 5 +- src/hooks/useDragAndDrop.ts | 5 +- src/hooks/useFlipper/index.native.ts | 2 +- src/hooks/useFlipper/index.ts | 2 +- src/hooks/useFlipper/types.ts | 4 +- src/hooks/useInitialWindowDimensions/index.ts | 3 +- src/hooks/useKeyboardShortcut.ts | 4 +- src/hooks/useKeyboardState.ts | 3 +- src/hooks/useLocalize.ts | 3 +- .../useReportScrollManager/index.native.ts | 2 +- src/hooks/useReportScrollManager/index.ts | 2 +- src/hooks/useReportScrollManager/types.ts | 2 +- src/hooks/useResponsiveLayout.ts | 3 +- src/hooks/useSafeAreaInsets/index.android.ts | 3 +- src/hooks/useScrollContext.ts | 3 +- src/hooks/useTabNavigatorFocus/index.ts | 2 +- src/hooks/useTheme.ts | 2 +- src/hooks/useThemePreference.ts | 2 +- .../useThemePreferenceWithStaticOverride.ts | 2 +- src/hooks/useViolations.ts | 2 +- src/hooks/useWindowDimensions/index.native.ts | 2 +- src/hooks/useWindowDimensions/index.ts | 2 +- src/languages/types.ts | 4 +- src/libs/API.ts | 9 +- src/libs/Accessibility/index.ts | 3 +- .../moveAccessibilityFocus/index.native.ts | 2 +- .../moveAccessibilityFocus/index.ts | 2 +- .../moveAccessibilityFocus/types.ts | 4 +- src/libs/ActiveClientManager/index.native.ts | 2 +- src/libs/ActiveClientManager/index.ts | 2 +- src/libs/ApiUtils.ts | 4 +- src/libs/AppStateMonitor/index.ts | 3 +- .../shouldReportActivity/index.native.ts | 2 +- .../shouldReportActivity/index.ts | 2 +- src/libs/Authentication.ts | 2 +- src/libs/BootSplash/index.ts | 2 +- src/libs/CardUtils.ts | 7 +- src/libs/Clipboard/index.native.ts | 2 +- src/libs/Clipboard/index.ts | 2 +- src/libs/CollectionUtils.ts | 2 +- src/libs/ComponentUtils/index.native.ts | 2 +- src/libs/ComponentUtils/index.ts | 2 +- src/libs/ComposerUtils/getDraftComment.ts | 3 +- .../getNumberOfLines/index.native.ts | 2 +- .../ComposerUtils/getNumberOfLines/index.ts | 2 +- .../updateIsFullComposerAvailable.ts | 2 +- .../updateNumberOfLines/index.native.ts | 2 +- .../updateNumberOfLines/index.ts | 2 +- .../updateNumberOfLines/types.ts | 6 +- src/libs/ControlSelection/index.native.ts | 2 +- src/libs/ControlSelection/index.ts | 4 +- src/libs/ControlSelection/types.ts | 2 +- src/libs/CurrencyUtils.ts | 3 +- src/libs/DateUtils.ts | 4 +- .../canUseTouchScreen/index.native.ts | 2 +- .../canUseTouchScreen/index.ts | 4 +- .../hasHoverSupport/index.native.ts | 2 +- .../hasHoverSupport/index.ts | 2 +- .../index.native.ts | 2 +- src/libs/DistanceRequestUtils.ts | 5 +- src/libs/DomUtils/index.native.ts | 2 +- src/libs/DomUtils/index.ts | 2 +- src/libs/E2E/API.mock.ts | 2 +- src/libs/E2E/apiMocks/authenticatePusher.ts | 2 +- src/libs/E2E/apiMocks/beginSignin.ts | 4 +- src/libs/E2E/apiMocks/openApp.ts | 2 +- src/libs/E2E/apiMocks/openReport.ts | 2 +- src/libs/E2E/apiMocks/readNewestAction.ts | 2 +- src/libs/E2E/apiMocks/signinUser.ts | 4 +- src/libs/E2E/isE2ETestSession.native.ts | 2 +- src/libs/E2E/isE2ETestSession.ts | 2 +- src/libs/E2E/reactNativeLaunchingTest.ts | 2 +- src/libs/E2E/tests/appStartTimeTest.e2e.ts | 2 +- src/libs/EmojiTrie.ts | 2 +- src/libs/EmojiUtils.ts | 10 +- .../Environment/betaChecker/index.android.ts | 2 +- src/libs/Environment/betaChecker/index.ios.ts | 2 +- src/libs/Environment/betaChecker/index.ts | 2 +- .../getEnvironment/index.native.ts | 2 +- src/libs/Environment/getEnvironment/index.ts | 2 +- src/libs/Environment/getEnvironment/types.ts | 4 +- src/libs/ErrorUtils.ts | 6 +- src/libs/Firebase/index.native.ts | 2 +- src/libs/Firebase/index.ts | 2 +- src/libs/Firebase/types.ts | 2 +- src/libs/FormUtils.ts | 2 +- src/libs/GetPhysicalCardUtils.ts | 2 +- src/libs/GroupChatUtils.ts | 5 +- src/libs/HapticFeedback/index.native.ts | 2 +- src/libs/HapticFeedback/index.ts | 2 +- src/libs/HeaderUtils.ts | 6 +- src/libs/HttpUtils.ts | 4 +- src/libs/IOUUtils.ts | 6 +- src/libs/IntlPolyfill/index.native.ts | 2 +- src/libs/IntlPolyfill/index.ts | 2 +- .../KeyDownPressListener/index.native.ts | 2 +- .../bindHandlerToKeydownEvent/index.native.ts | 2 +- .../bindHandlerToKeydownEvent/index.ts | 2 +- .../KeyboardShortcut/getKeyEventModifiers.ts | 2 +- .../isEnterWhileComposition.ts | 4 +- src/libs/LocaleDigitUtils.ts | 4 +- .../LocaleListener/BaseLocaleListener.ts | 3 +- .../Localize/LocaleListener/index.desktop.ts | 2 +- src/libs/Localize/LocaleListener/index.ts | 2 +- src/libs/Localize/LocaleListener/types.ts | 4 +- src/libs/Localize/index.ts | 4 +- src/libs/Log.ts | 2 +- src/libs/Metrics/index.native.ts | 2 +- src/libs/Metrics/index.ts | 2 +- .../Middleware/HandleUnusedOptimisticID.ts | 4 +- src/libs/Middleware/Logging.ts | 6 +- src/libs/Middleware/Reauthentication.ts | 2 +- src/libs/Middleware/RecheckConnection.ts | 2 +- src/libs/Middleware/SaveResponseInOnyx.ts | 2 +- src/libs/Middleware/types.ts | 4 +- src/libs/ModifiedExpenseMessage.ts | 4 +- src/libs/MoneyRequestUtils.ts | 2 +- .../Navigation/AppNavigator/AuthScreens.tsx | 5 +- .../ModalNavigatorScreenOptions.ts | 5 +- .../AppNavigator/ModalStackNavigators.tsx | 5 +- .../Navigators/LeftModalNavigator.tsx | 7 +- .../Navigators/RightModalNavigator.tsx | 5 +- .../AppNavigator/ReportScreenIDSetter.ts | 3 +- .../AppNavigator/ReportScreenWrapper.tsx | 4 +- .../CustomRouter.ts | 5 +- .../index.native.tsx | 6 +- .../createCustomStackNavigator/index.tsx | 6 +- .../createCustomStackNavigator/types.ts | 4 +- .../AppNavigator/defaultScreenOptions.ts | 2 +- .../getRootNavigatorScreenOptions.ts | 4 +- src/libs/Navigation/FreezeWrapper.tsx | 2 +- src/libs/Navigation/Navigation.ts | 8 +- src/libs/Navigation/NavigationRoot.tsx | 3 +- src/libs/Navigation/OnyxTabNavigator.tsx | 9 +- .../Navigation/currentUrl/index.native.ts | 2 +- src/libs/Navigation/currentUrl/index.ts | 2 +- src/libs/Navigation/dismissModal.ts | 5 +- src/libs/Navigation/getStateFromPath.ts | 5 +- .../Navigation/getTopmostReportActionID.ts | 4 +- src/libs/Navigation/getTopmostReportId.ts | 4 +- src/libs/Navigation/linkTo.ts | 8 +- src/libs/Navigation/linkingConfig.ts | 4 +- src/libs/Navigation/navigationRef.ts | 2 +- src/libs/Navigation/types.ts | 10 +- src/libs/Network/MainQueue.ts | 2 +- src/libs/Network/NetworkStore.ts | 2 +- src/libs/Network/SequentialQueue.ts | 2 +- src/libs/Network/index.ts | 4 +- .../LocalNotification/BrowserNotifications.ts | 6 +- .../focusApp/index.desktop.ts | 2 +- .../LocalNotification/focusApp/index.ts | 2 +- .../LocalNotification/index.desktop.ts | 4 +- .../LocalNotification/index.native.ts | 2 +- .../Notification/LocalNotification/index.ts | 4 +- .../Notification/LocalNotification/types.ts | 4 +- .../ForegroundNotifications/index.android.ts | 2 +- .../ForegroundNotifications/index.ios.ts | 2 +- .../ForegroundNotifications/index.ts | 2 +- .../PushNotification/NotificationType.ts | 2 +- .../backgroundRefresh/index.android.ts | 2 +- .../backgroundRefresh/index.ts | 2 +- .../PushNotification/index.native.ts | 9 +- .../Notification/PushNotification/index.ts | 2 +- .../shouldShowPushNotification.ts | 4 +- .../Notification/PushNotification/types.ts | 5 +- .../clearReportNotifications/index.android.ts | 2 +- .../clearReportNotifications/index.ios.ts | 7 +- .../clearReportNotifications/index.ts | 2 +- src/libs/NumberFormatUtils.ts | 4 +- .../reportWithoutHasDraftSelector.ts | 2 +- src/libs/PaymentUtils.ts | 8 +- src/libs/Performance.tsx | 4 +- src/libs/Permissions.ts | 4 +- src/libs/PersonalDetailsUtils.ts | 7 +- src/libs/PolicyUtils.ts | 7 +- src/libs/Pusher/library/index.native.ts | 2 +- src/libs/Pusher/library/types.ts | 4 +- src/libs/Pusher/pusher.ts | 12 +- src/libs/PusherConnectionManager.ts | 6 +- src/libs/PusherUtils.ts | 4 +- src/libs/ReceiptUtils.ts | 4 +- src/libs/ReportActionComposeFocusManager.ts | 2 +- src/libs/ReportActionsUtils.ts | 17 ++- src/libs/ReportUtils.ts | 30 +++-- src/libs/Request.ts | 6 +- src/libs/SelectionScraper/index.native.ts | 2 +- src/libs/SelectionScraper/index.ts | 5 +- src/libs/SidebarUtils.ts | 18 +-- src/libs/StartupTimer/index.native.ts | 2 +- src/libs/StartupTimer/index.ts | 2 +- src/libs/TaskUtils.ts | 7 +- src/libs/TransactionUtils.ts | 14 +- src/libs/Trie/index.ts | 3 +- src/libs/UnreadIndicatorUpdater/index.ts | 5 +- .../updateUnread/index.android.ts | 2 +- .../updateUnread/index.desktop.ts | 2 +- .../updateUnread/index.ios.ts | 2 +- .../updateUnread/index.ts | 2 +- src/libs/UserUtils.ts | 11 +- src/libs/ValidationUtils.ts | 4 +- src/libs/ViolationsUtils.ts | 2 +- src/libs/Visibility/index.desktop.ts | 2 +- src/libs/Visibility/index.native.ts | 2 +- src/libs/Visibility/index.ts | 2 +- src/libs/VisualViewport/index.native.ts | 2 +- src/libs/VisualViewport/index.ts | 2 +- src/libs/__mocks__/Permissions.ts | 2 +- src/libs/actions/App.ts | 15 ++- src/libs/actions/Chronos.ts | 5 +- .../Device/generateDeviceID/index.android.ts | 2 +- .../Device/generateDeviceID/index.desktop.ts | 2 +- .../Device/generateDeviceID/index.ios.ts | 2 +- .../actions/Device/generateDeviceID/index.ts | 2 +- .../Device/getDeviceInfo/getBaseInfo.ts | 2 +- .../getOSAndName/index.native.ts | 2 +- .../Device/getDeviceInfo/index.android.ts | 2 +- .../Device/getDeviceInfo/index.desktop.ts | 2 +- .../actions/Device/getDeviceInfo/index.ios.ts | 2 +- .../actions/Device/getDeviceInfo/index.ts | 2 +- .../actions/Device/getDeviceInfo/types.ts | 2 +- src/libs/actions/EmojiPickerAction.ts | 6 +- src/libs/actions/FormActions.ts | 8 +- src/libs/actions/Link.ts | 3 +- src/libs/actions/MapboxToken.ts | 5 +- src/libs/actions/OnyxUpdates.ts | 9 +- src/libs/actions/PaymentMethods.ts | 11 +- src/libs/actions/PersistedRequests.ts | 2 +- src/libs/actions/PersonalDetails.ts | 9 +- src/libs/actions/PriorityMode.ts | 5 +- src/libs/actions/QueuedOnyxUpdates.ts | 3 +- src/libs/actions/Report.ts | 25 ++-- src/libs/actions/ReportActions.ts | 2 +- .../Session/clearCache/index.native.ts | 2 +- src/libs/actions/Session/clearCache/index.ts | 2 +- src/libs/actions/Session/index.ts | 13 +- src/libs/actions/SignInRedirect.ts | 3 +- src/libs/actions/Transaction.ts | 6 +- src/libs/actions/TwoFactorAuthActions.ts | 5 +- src/libs/actions/UserLocation.ts | 2 +- src/libs/actions/Welcome.ts | 7 +- src/libs/asyncOpenURL/index.ts | 2 +- src/libs/asyncOpenURL/index.website.ts | 2 +- src/libs/calculateAnchorPosition.ts | 4 +- .../index.native.ts | 2 +- src/libs/canFocusInputOnScreenFocus/index.ts | 2 +- src/libs/convertToLTR/index.android.ts | 2 +- src/libs/convertToLTR/index.ts | 2 +- .../convertToLTRForComposer/index.android.ts | 2 +- src/libs/convertToLTRForComposer/index.ts | 2 +- src/libs/cropOrRotateImage/index.native.ts | 2 +- src/libs/cropOrRotateImage/index.ts | 2 +- src/libs/cropOrRotateImage/types.ts | 2 +- .../fileDownload/getImageResolution.native.ts | 2 +- src/libs/fileDownload/index.android.ts | 3 +- src/libs/fileDownload/types.ts | 2 +- src/libs/focusAndUpdateMultilineInputRange.ts | 2 +- src/libs/focusComposerWithDelay.ts | 2 +- .../index.android.ts | 2 +- .../focusTextInputAfterAnimation/index.ts | 2 +- .../focusTextInputAfterAnimation/types.ts | 2 +- src/libs/getButtonState.ts | 2 +- .../getClickedTargetLocation/index.native.ts | 2 +- src/libs/getClickedTargetLocation/index.ts | 2 +- src/libs/getComponentDisplayName.ts | 2 +- src/libs/getCurrentPosition/index.android.ts | 3 +- src/libs/getCurrentPosition/index.ios.ts | 2 +- src/libs/getCurrentPosition/index.ts | 3 +- src/libs/getModalState.ts | 5 +- src/libs/getOperatingSystem/index.native.ts | 2 +- src/libs/getOperatingSystem/index.ts | 2 +- src/libs/getOperatingSystem/types.ts | 4 +- .../getPermittedDecimalSeparator/index.ios.ts | 2 +- .../getPermittedDecimalSeparator/index.ts | 2 +- .../getPlaidDesktopMessage/index.desktop.ts | 2 +- src/libs/getPlaidDesktopMessage/index.ts | 2 +- .../index.android.ts | 2 +- .../getPlaidLinkTokenParameters/index.ios.ts | 2 +- src/libs/getPlaidLinkTokenParameters/index.ts | 2 +- .../index.native.ts | 2 +- .../getPlaidOAuthReceivedRedirectURI/index.ts | 2 +- src/libs/getPlatform/index.android.ts | 2 +- src/libs/getPlatform/index.desktop.ts | 2 +- src/libs/getPlatform/index.ios.ts | 2 +- src/libs/getPlatform/index.ts | 2 +- src/libs/getPlatform/types.ts | 4 +- .../index.android.ts | 2 +- src/libs/getSecureEntryKeyboardType/index.ts | 2 +- src/libs/getSecureEntryKeyboardType/types.ts | 2 +- .../index.android.ts | 2 +- src/libs/getWindowHeightAdjustment/index.ts | 2 +- src/libs/getWindowHeightAdjustment/types.ts | 2 +- src/libs/isInputAutoFilled.ts | 2 +- src/libs/isReportMessageAttachment.ts | 2 +- src/libs/isSelectorSupported/index.native.ts | 2 +- src/libs/isSelectorSupported/index.ts | 2 +- src/libs/localFileDownload/index.android.ts | 2 +- src/libs/localFileDownload/index.ios.ts | 2 +- src/libs/localFileDownload/index.ts | 2 +- .../CheckForPreviousReportActionID.ts | 5 +- .../KeyReportActionsDraftByReportActionID.ts | 5 +- .../RemoveEmptyReportActionsDrafts.ts | 5 +- src/libs/migrations/RenameReceiptFilename.ts | 4 +- .../TransactionBackupsToCollection.ts | 5 +- src/libs/models/BankAccount.ts | 5 +- src/libs/onyxSubscribe.ts | 5 +- src/libs/setSelection/index.native.ts | 2 +- src/libs/setSelection/index.ts | 2 +- src/libs/setSelection/types.ts | 2 +- .../index.ts | 2 +- ...uldShowComposeInputKeyboardAwareBuilder.ts | 7 +- src/libs/shouldDelayFocus/index.android.ts | 2 +- src/libs/shouldDelayFocus/index.ts | 2 +- .../shouldRenderOffscreen/index.android.ts | 2 +- src/libs/shouldRenderOffscreen/index.ts | 2 +- src/libs/shouldReopenOnfido/index.android.ts | 2 +- src/libs/shouldReopenOnfido/index.ts | 2 +- src/libs/tryResolveUrlFromApiRoot.ts | 2 +- .../updateMultilineInputRange/index.ios.ts | 2 +- src/libs/updateMultilineInputRange/index.ts | 2 +- src/libs/updateMultilineInputRange/types.ts | 2 +- src/libs/useNativeDriver/index.native.ts | 2 +- src/libs/useNativeDriver/index.ts | 2 +- .../index.native.ts | 2 +- .../willBlurTextInputOnTapOutside/index.ts | 2 +- src/pages/UnlinkLoginPage.tsx | 9 +- src/pages/home/ReportScreenContext.ts | 5 +- .../ContextMenu/ReportActionContextMenu.ts | 8 +- .../report/ReportActionItemBasicMessage.tsx | 2 +- .../home/report/ReportActionItemDate.tsx | 2 +- .../home/report/ReportActionItemDraft.tsx | 2 +- .../home/report/ReportActionItemGrouped.tsx | 5 +- .../home/report/ReportActionItemMessage.tsx | 6 +- .../home/report/ReportActionItemSingle.tsx | 7 +- .../withReportAndReportActionOrNotFound.tsx | 12 +- .../home/report/withReportOrNotFound.tsx | 10 +- src/pages/workspace/WorkspacesListRow.tsx | 11 +- src/pages/workspace/withPolicy.tsx | 11 +- .../withPolicyAndFullscreenLoading.tsx | 9 +- src/stories/Breadcrumbs.stories.tsx | 3 +- src/stories/Search.stories.tsx | 3 +- src/styles/index.ts | 17 +-- src/styles/theme/colors.ts | 2 +- src/styles/theme/context/ThemeContext.ts | 2 +- .../context/ThemeIllustrationsContext.ts | 2 +- src/styles/theme/illustrations/index.ts | 2 +- src/styles/theme/illustrations/themes/dark.ts | 2 +- .../theme/illustrations/themes/light.ts | 2 +- src/styles/theme/illustrations/types.ts | 2 +- src/styles/theme/index.ts | 2 +- src/styles/theme/themes/dark.ts | 2 +- src/styles/theme/themes/light.ts | 2 +- src/styles/theme/types.ts | 4 +- .../utils/addOutlineWidth/index.native.ts | 2 +- src/styles/utils/addOutlineWidth/index.ts | 2 +- src/styles/utils/addOutlineWidth/types.ts | 4 +- src/styles/utils/borders.ts | 2 +- src/styles/utils/cardStyles/index.native.ts | 2 +- src/styles/utils/cardStyles/index.ts | 2 +- src/styles/utils/cardStyles/types.ts | 2 +- src/styles/utils/codeStyles/index.android.ts | 2 +- src/styles/utils/codeStyles/index.ios.ts | 2 +- src/styles/utils/codeStyles/index.ts | 2 +- src/styles/utils/codeStyles/types.ts | 2 +- .../containerComposeStyles/index.native.ts | 2 +- .../utils/containerComposeStyles/index.ts | 2 +- .../utils/containerComposeStyles/types.ts | 4 +- src/styles/utils/cursor/index.native.ts | 2 +- src/styles/utils/cursor/index.ts | 2 +- src/styles/utils/cursor/types.ts | 2 +- src/styles/utils/display.ts | 2 +- .../utils/editedLabelStyles/index.native.ts | 2 +- src/styles/utils/editedLabelStyles/index.ts | 2 +- src/styles/utils/editedLabelStyles/types.ts | 2 +- src/styles/utils/flex.ts | 2 +- .../utils/fontFamily/bold/index.android.ts | 2 +- src/styles/utils/fontFamily/bold/index.ios.ts | 2 +- src/styles/utils/fontFamily/bold/index.ts | 2 +- src/styles/utils/fontFamily/bold/types.ts | 2 +- .../utils/fontFamily/multiFontFamily.ts | 2 +- .../utils/fontFamily/singleFontFamily.ts | 2 +- src/styles/utils/fontFamily/types.ts | 2 +- .../utils/fontWeight/bold/index.android.ts | 2 +- src/styles/utils/fontWeight/bold/index.ts | 2 +- src/styles/utils/fontWeight/bold/types.ts | 2 +- .../utils/generators/ModalStyleUtils.ts | 10 +- .../ReportActionContextMenuStyleUtils.ts | 8 +- .../utils/generators/TooltipStyleUtils.ts | 5 +- src/styles/utils/generators/types.ts | 4 +- .../getContextMenuItemStyles/index.native.ts | 2 +- .../utils/getContextMenuItemStyles/index.ts | 2 +- .../utils/getContextMenuItemStyles/types.ts | 4 +- .../index.desktop.ts | 2 +- .../getNavigationModalCardStyles/index.ts | 2 +- .../index.website.ts | 2 +- .../getNavigationModalCardStyles/types.ts | 2 +- .../getPopOverVerticalOffset/index.desktop.ts | 2 +- .../utils/getPopOverVerticalOffset/index.ts | 2 +- src/styles/utils/index.ts | 16 ++- src/styles/utils/italic/index.android.ts | 2 +- src/styles/utils/italic/index.ts | 2 +- src/styles/utils/italic/types.ts | 2 +- src/styles/utils/objectFit.ts | 2 +- .../index.ios.ts | 2 +- .../index.ts | 2 +- .../types.ts | 2 +- .../utils/optionRowStyles/index.native.ts | 2 +- src/styles/utils/optionRowStyles/index.ts | 2 +- src/styles/utils/optionRowStyles/types.ts | 4 +- src/styles/utils/overflow.ts | 2 +- src/styles/utils/overflowAuto/index.native.ts | 2 +- src/styles/utils/overflowAuto/index.ts | 4 +- src/styles/utils/overflowAuto/types.ts | 2 +- .../utils/overflowXHidden/index.native.ts | 2 +- src/styles/utils/overflowXHidden/index.ts | 2 +- src/styles/utils/overflowXHidden/types.ts | 2 +- .../overscrollBehaviorContain/index.native.ts | 2 +- .../utils/overscrollBehaviorContain/index.ts | 2 +- .../utils/overscrollBehaviorContain/types.ts | 2 +- .../utils/pointerEventsAuto/index.native.ts | 2 +- src/styles/utils/pointerEventsAuto/index.ts | 2 +- src/styles/utils/pointerEventsAuto/types.ts | 2 +- .../pointerEventsBoxNone/index.native.ts | 2 +- .../utils/pointerEventsBoxNone/index.ts | 2 +- .../utils/pointerEventsBoxNone/types.ts | 2 +- .../utils/pointerEventsNone/index.native.ts | 2 +- src/styles/utils/pointerEventsNone/index.ts | 2 +- src/styles/utils/pointerEventsNone/types.ts | 2 +- src/styles/utils/positioning.ts | 2 +- src/styles/utils/sizing.ts | 2 +- src/styles/utils/spacing.ts | 2 +- src/styles/utils/textDecorationLine.ts | 2 +- .../utils/textUnderline/index.native.ts | 2 +- src/styles/utils/textUnderline/index.ts | 2 +- src/styles/utils/textUnderline/types.ts | 2 +- src/styles/utils/types.ts | 4 +- src/styles/utils/userSelect/index.native.ts | 2 +- src/styles/utils/userSelect/index.ts | 2 +- src/styles/utils/userSelect/types.ts | 2 +- src/styles/utils/visibility/index.native.ts | 2 +- src/styles/utils/visibility/index.ts | 2 +- src/styles/utils/visibility/types.ts | 2 +- src/styles/utils/whiteSpace/index.native.ts | 2 +- src/styles/utils/whiteSpace/index.ts | 2 +- src/styles/utils/whiteSpace/types.ts | 2 +- src/styles/utils/wordBreak/index.native.ts | 2 +- src/styles/utils/wordBreak/index.ts | 2 +- src/styles/utils/wordBreak/types.ts | 2 +- src/styles/utils/writingDirection.ts | 2 +- src/types/modules/pusher.d.ts | 2 +- src/types/modules/react-native-onyx.d.ts | 2 +- src/types/modules/react-native-svg.d.ts | 2 +- src/types/modules/react-native.d.ts | 4 +- src/types/modules/react-navigation.d.ts | 2 +- src/types/modules/react.d.ts | 2 +- src/types/onyx/Account.ts | 6 +- src/types/onyx/AccountData.ts | 4 +- src/types/onyx/Bank.ts | 8 +- src/types/onyx/BankAccount.ts | 6 +- src/types/onyx/Beta.ts | 4 +- src/types/onyx/Card.ts | 6 +- src/types/onyx/Form.ts | 2 +- src/types/onyx/Fund.ts | 6 +- src/types/onyx/Locale.ts | 4 +- src/types/onyx/Login.ts | 2 +- src/types/onyx/OnyxCommon.ts | 6 +- src/types/onyx/OnyxUpdatesFromServer.ts | 6 +- src/types/onyx/OriginalMessage.ts | 6 +- src/types/onyx/PaymentMethod.ts | 8 +- src/types/onyx/PersonalBankAccount.ts | 2 +- src/types/onyx/PersonalDetails.ts | 6 +- src/types/onyx/PlaidData.ts | 4 +- src/types/onyx/Policy.ts | 6 +- src/types/onyx/PolicyMember.ts | 2 +- src/types/onyx/ReimbursementAccount.ts | 6 +- src/types/onyx/Report.ts | 8 +- src/types/onyx/ReportAction.ts | 17 +-- src/types/onyx/ReportActionReactions.ts | 2 +- src/types/onyx/ReportActionsDrafts.ts | 2 +- src/types/onyx/Request.ts | 4 +- src/types/onyx/Response.ts | 2 +- src/types/onyx/Session.ts | 6 +- src/types/onyx/Task.ts | 2 +- src/types/onyx/Transaction.ts | 8 +- src/types/onyx/UserWallet.ts | 6 +- src/types/onyx/WalletAdditionalDetails.ts | 2 +- src/types/onyx/WalletOnfido.ts | 2 +- src/types/onyx/WalletTerms.ts | 2 +- src/types/onyx/WalletTransfer.ts | 8 +- src/types/onyx/index.ts | 127 ++++++++++-------- src/types/utils/CustomRefObject.ts | 2 +- src/types/utils/EmptyObject.ts | 2 +- src/types/utils/IconAsset.ts | 4 +- src/types/utils/textRef.ts | 2 +- src/types/utils/viewForwardedRef.ts | 4 +- src/types/utils/viewRef.ts | 2 +- .../ModifiedExpenseMessage.perf-test.ts | 2 +- .../perf-test/ReportActionsUtils.perf-test.ts | 3 +- tests/perf-test/ReportUtils.perf-test.ts | 2 +- tests/perf-test/SidebarUtils.perf-test.ts | 11 +- tests/unit/PersistedRequests.ts | 2 +- tests/utils/collections/reportActions.ts | 2 +- tests/utils/collections/transaction.ts | 2 +- 774 files changed, 1609 insertions(+), 1332 deletions(-) diff --git a/.github/actions/javascript/authorChecklist/categories/index.ts b/.github/actions/javascript/authorChecklist/categories/index.ts index 53e0ed2ab838..5ed63c647e74 100644 --- a/.github/actions/javascript/authorChecklist/categories/index.ts +++ b/.github/actions/javascript/authorChecklist/categories/index.ts @@ -1,4 +1,4 @@ -import Category from './Category'; +import type Category from './Category'; import newComponent from './newComponentCategory'; const categories: Category[] = [newComponent]; diff --git a/.github/actions/javascript/authorChecklist/categories/newComponentCategory.ts b/.github/actions/javascript/authorChecklist/categories/newComponentCategory.ts index 63e26c015a5a..405a687b5d3e 100644 --- a/.github/actions/javascript/authorChecklist/categories/newComponentCategory.ts +++ b/.github/actions/javascript/authorChecklist/categories/newComponentCategory.ts @@ -4,7 +4,7 @@ import traverse from '@babel/traverse'; import CONST from '../../../../libs/CONST'; import GithubUtils from '../../../../libs/GithubUtils'; import promiseSome from '../../../../libs/promiseSome'; -import Category from './Category'; +import type Category from './Category'; type SuperClassType = {superClass: {name?: string; object: {name: string}; property: {name: string}} | null; name: string}; diff --git a/assets/emojis/common.ts b/assets/emojis/common.ts index cbefb21cf2d6..b23383590c51 100644 --- a/assets/emojis/common.ts +++ b/assets/emojis/common.ts @@ -7,7 +7,7 @@ import TravelAndPlaces from '@assets/images/emojiCategoryIcons/plane.svg'; import AnimalsAndNature from '@assets/images/emojiCategoryIcons/plant.svg'; import Activities from '@assets/images/emojiCategoryIcons/soccer-ball.svg'; import FrequentlyUsed from '@assets/images/history.svg'; -import {HeaderEmoji, PickerEmojis} from './types'; +import type {HeaderEmoji, PickerEmojis} from './types'; const skinTones = [ { diff --git a/assets/emojis/en.ts b/assets/emojis/en.ts index 0a1ca7611117..28051e5ecd99 100644 --- a/assets/emojis/en.ts +++ b/assets/emojis/en.ts @@ -1,4 +1,4 @@ -import {EmojisList} from './types'; +import type {EmojisList} from './types'; /* eslint-disable @typescript-eslint/naming-convention */ const enEmojis: EmojisList = { diff --git a/assets/emojis/es.ts b/assets/emojis/es.ts index 46f825643859..0d23f887f556 100644 --- a/assets/emojis/es.ts +++ b/assets/emojis/es.ts @@ -1,4 +1,4 @@ -import {EmojisList} from './types'; +import type {EmojisList} from './types'; /* eslint-disable @typescript-eslint/naming-convention */ const esEmojis: EmojisList = { diff --git a/assets/emojis/index.ts b/assets/emojis/index.ts index bc62adc4b252..5e5565da1499 100644 --- a/assets/emojis/index.ts +++ b/assets/emojis/index.ts @@ -1,7 +1,7 @@ import emojis from './common'; import enEmojis from './en'; import esEmojis from './es'; -import {Emoji} from './types'; +import type {Emoji} from './types'; type EmojiTable = Record; diff --git a/assets/emojis/types.ts b/assets/emojis/types.ts index c3a3b692f202..e8c222fde948 100644 --- a/assets/emojis/types.ts +++ b/assets/emojis/types.ts @@ -1,4 +1,4 @@ -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; type Emoji = { code: string; diff --git a/src/CONFIG.ts b/src/CONFIG.ts index 61e347671269..37da65f0c305 100644 --- a/src/CONFIG.ts +++ b/src/CONFIG.ts @@ -1,5 +1,6 @@ import {Platform} from 'react-native'; -import Config, {NativeConfig} from 'react-native-config'; +import type {NativeConfig} from 'react-native-config'; +import Config from 'react-native-config'; import CONST from './CONST'; import getPlatform from './libs/getPlatform'; import * as Url from './libs/Url'; diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index dff3a0aa441b..89ddbdc06883 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -1,8 +1,8 @@ -import {OnyxEntry} from 'react-native-onyx/lib/types'; -import {ValueOf} from 'type-fest'; -import CONST from './CONST'; -import * as OnyxTypes from './types/onyx'; -import DeepValueOf from './types/utils/DeepValueOf'; +import type {OnyxEntry} from 'react-native-onyx/lib/types'; +import type {ValueOf} from 'type-fest'; +import type CONST from './CONST'; +import type * as OnyxTypes from './types/onyx'; +import type DeepValueOf from './types/utils/DeepValueOf'; /** * This is a file containing constants for all the top level keys in our store diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 49067d1c7b8f..35fa4bbf0837 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1,5 +1,5 @@ -import {IsEqual, ValueOf} from 'type-fest'; -import CONST from './CONST'; +import type {IsEqual, ValueOf} from 'type-fest'; +import type CONST from './CONST'; // This is a file containing constants for all the routes we want to be able to go to diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 26a23e7efadc..91c4153bacd2 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -2,7 +2,7 @@ * This is a file containing constants for all of the screen names. In most cases, we should use the routes for * navigation. But there are situations where we may need to access screen names directly. */ -import DeepValueOf from './types/utils/DeepValueOf'; +import type DeepValueOf from './types/utils/DeepValueOf'; const PROTECTED_SCREENS = { HOME: 'Home', diff --git a/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx b/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx index 1bcdbb383f7a..48774699fcb5 100644 --- a/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx +++ b/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx @@ -1,6 +1,7 @@ import Str from 'expensify-common/lib/str'; import React, {useEffect, useRef} from 'react'; -import {Text as RNText, StyleSheet} from 'react-native'; +import type {Text as RNText} from 'react-native'; +import { StyleSheet} from 'react-native'; import PressableWithSecondaryInteraction from '@components/PressableWithSecondaryInteraction'; import Text from '@components/Text'; import Tooltip from '@components/Tooltip'; diff --git a/src/components/AnchorForCommentsOnly/types.ts b/src/components/AnchorForCommentsOnly/types.ts index 005364c2077f..eea8571f5277 100644 --- a/src/components/AnchorForCommentsOnly/types.ts +++ b/src/components/AnchorForCommentsOnly/types.ts @@ -1,5 +1,5 @@ -import {StyleProp, TextStyle} from 'react-native'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {StyleProp, TextStyle} from 'react-native'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type AnchorForCommentsOnlyProps = ChildrenProps & { /** The URL to open */ diff --git a/src/components/AnimatedStep/AnimatedStepContext.ts b/src/components/AnimatedStep/AnimatedStepContext.ts index 3b4c5f79a34f..14dba4b27cc2 100644 --- a/src/components/AnimatedStep/AnimatedStepContext.ts +++ b/src/components/AnimatedStep/AnimatedStepContext.ts @@ -1,6 +1,7 @@ -import React, {createContext} from 'react'; -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type React from 'react'; +import {createContext} from 'react'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type AnimationDirection = ValueOf; diff --git a/src/components/AnimatedStep/AnimatedStepProvider.tsx b/src/components/AnimatedStep/AnimatedStepProvider.tsx index 53b3a0e0a53d..ea268e1d52cb 100644 --- a/src/components/AnimatedStep/AnimatedStepProvider.tsx +++ b/src/components/AnimatedStep/AnimatedStepProvider.tsx @@ -1,7 +1,8 @@ import React, {useMemo, useState} from 'react'; import CONST from '@src/CONST'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; -import AnimatedStepContext, {AnimationDirection} from './AnimatedStepContext'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {AnimationDirection} from './AnimatedStepContext'; +import AnimatedStepContext from './AnimatedStepContext'; function AnimatedStepProvider({children}: ChildrenProps): React.ReactNode { const [animationDirection, setAnimationDirection] = useState(CONST.ANIMATION_DIRECTION.IN); diff --git a/src/components/AnimatedStep/index.tsx b/src/components/AnimatedStep/index.tsx index e2b9952c0617..66d2108ca5d8 100644 --- a/src/components/AnimatedStep/index.tsx +++ b/src/components/AnimatedStep/index.tsx @@ -1,11 +1,11 @@ import React, {useMemo} from 'react'; -import {StyleProp, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import * as Animatable from 'react-native-animatable'; import useThemeStyles from '@hooks/useThemeStyles'; import useNativeDriver from '@libs/useNativeDriver'; import CONST from '@src/CONST'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; -import {AnimationDirection} from './AnimatedStepContext'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {AnimationDirection} from './AnimatedStepContext'; type AnimatedStepProps = ChildrenProps & { /** Styles to be assigned to Container */ diff --git a/src/components/AnimatedStep/useAnimatedStepContext.ts b/src/components/AnimatedStep/useAnimatedStepContext.ts index 3edc71e5289e..2adde8fd576e 100644 --- a/src/components/AnimatedStep/useAnimatedStepContext.ts +++ b/src/components/AnimatedStep/useAnimatedStepContext.ts @@ -1,5 +1,6 @@ import {useContext} from 'react'; -import AnimatedStepContext, {StepContext} from './AnimatedStepContext'; +import type {StepContext} from './AnimatedStepContext'; +import AnimatedStepContext from './AnimatedStepContext'; function useAnimatedStepContext(): StepContext { const context = useContext(AnimatedStepContext); diff --git a/src/components/AnonymousReportFooter.tsx b/src/components/AnonymousReportFooter.tsx index 877ca9444661..ad79e316baf3 100644 --- a/src/components/AnonymousReportFooter.tsx +++ b/src/components/AnonymousReportFooter.tsx @@ -1,11 +1,11 @@ import React from 'react'; import {Text, View} from 'react-native'; -import {OnyxCollection} from 'react-native-onyx'; -import {OnyxEntry} from 'react-native-onyx/lib/types'; +import type {OnyxCollection} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx/lib/types'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Session from '@userActions/Session'; -import {PersonalDetails, Report} from '@src/types/onyx'; +import type {PersonalDetails, Report} from '@src/types/onyx'; import AvatarWithDisplayName from './AvatarWithDisplayName'; import Button from './Button'; import ExpensifyWordmark from './ExpensifyWordmark'; diff --git a/src/components/ArchivedReportFooter.tsx b/src/components/ArchivedReportFooter.tsx index 2dae84106971..98736f39b96a 100644 --- a/src/components/ArchivedReportFooter.tsx +++ b/src/components/ArchivedReportFooter.tsx @@ -1,6 +1,7 @@ import lodashEscape from 'lodash/escape'; import React from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; diff --git a/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx b/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx index b72662f989dc..8ea3b3ac6c9e 100644 --- a/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx +++ b/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx @@ -1,6 +1,7 @@ import {FlashList} from '@shopify/flash-list'; -import React, {ForwardedRef, forwardRef, ReactElement, useCallback, useEffect, useMemo, useRef} from 'react'; -import {View} from 'react-native'; +import type {ForwardedRef, ReactElement} from 'react'; +import React, { forwardRef, useCallback, useEffect, useMemo, useRef} from 'react'; +import type {View} from 'react-native'; // We take ScrollView from this package to properly handle the scrolling of AutoCompleteSuggestions in chats since one scroll is nested inside another import {ScrollView} from 'react-native-gesture-handler'; import Animated, {Easing, FadeOutDown, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; diff --git a/src/components/AutoCompleteSuggestions/types.ts b/src/components/AutoCompleteSuggestions/types.ts index 9130f5139d71..61d614dcf2e4 100644 --- a/src/components/AutoCompleteSuggestions/types.ts +++ b/src/components/AutoCompleteSuggestions/types.ts @@ -1,4 +1,4 @@ -import {ReactElement} from 'react'; +import type {ReactElement} from 'react'; type MeasureParentContainerCallback = (x: number, y: number, width: number) => void; diff --git a/src/components/AutoUpdateTime.tsx b/src/components/AutoUpdateTime.tsx index 258bdb281eb2..f6be32fd3970 100644 --- a/src/components/AutoUpdateTime.tsx +++ b/src/components/AutoUpdateTime.tsx @@ -6,9 +6,10 @@ import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import DateUtils from '@libs/DateUtils'; -import {Timezone} from '@src/types/onyx/PersonalDetails'; +import type {Timezone} from '@src/types/onyx/PersonalDetails'; import Text from './Text'; -import withLocalize, {WithLocalizeProps} from './withLocalize'; +import type {WithLocalizeProps} from './withLocalize'; +import withLocalize from './withLocalize'; type AutoUpdateTimeProps = WithLocalizeProps & { /** Timezone of the user from their personal details */ diff --git a/src/components/Avatar.tsx b/src/components/Avatar.tsx index 65b0b6c36061..5f25229a9a97 100644 --- a/src/components/Avatar.tsx +++ b/src/components/Avatar.tsx @@ -1,14 +1,15 @@ import React, {useEffect, useState} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useNetwork from '@hooks/useNetwork'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ReportUtils from '@libs/ReportUtils'; -import {AvatarSource} from '@libs/UserUtils'; +import type {AvatarSource} from '@libs/UserUtils'; import type {AvatarSizeName} from '@styles/utils'; import CONST from '@src/CONST'; -import {AvatarType} from '@src/types/onyx/OnyxCommon'; +import type {AvatarType} from '@src/types/onyx/OnyxCommon'; import Icon from './Icon'; import * as Expensicons from './Icon/Expensicons'; import Image from './Image'; diff --git a/src/components/AvatarWithDisplayName.tsx b/src/components/AvatarWithDisplayName.tsx index b9bae33d7e23..024ca0243d12 100644 --- a/src/components/AvatarWithDisplayName.tsx +++ b/src/components/AvatarWithDisplayName.tsx @@ -1,7 +1,8 @@ import React, {useCallback, useEffect, useRef} from 'react'; import {View} from 'react-native'; -import {OnyxCollection, OnyxEntry, withOnyx} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -11,7 +12,7 @@ import * as ReportUtils from '@libs/ReportUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import {PersonalDetails, Policy, Report, ReportActions} from '@src/types/onyx'; +import type {PersonalDetails, Policy, Report, ReportActions} from '@src/types/onyx'; import DisplayNames from './DisplayNames'; import MultipleAvatars from './MultipleAvatars'; import ParentNavigationSubtitle from './ParentNavigationSubtitle'; diff --git a/src/components/Badge.tsx b/src/components/Badge.tsx index 70aebc30ee83..f49068f601fd 100644 --- a/src/components/Badge.tsx +++ b/src/components/Badge.tsx @@ -1,5 +1,6 @@ import React, {useCallback} from 'react'; -import {GestureResponderEvent, PressableStateCallbackType, StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {GestureResponderEvent, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; diff --git a/src/components/Banner.tsx b/src/components/Banner.tsx index d57257efab49..acb6d377bfa9 100644 --- a/src/components/Banner.tsx +++ b/src/components/Banner.tsx @@ -1,5 +1,6 @@ import React, {memo} from 'react'; -import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/BaseMiniContextMenuItem.tsx b/src/components/BaseMiniContextMenuItem.tsx index 8d115a37cba7..44a259e50e4d 100644 --- a/src/components/BaseMiniContextMenuItem.tsx +++ b/src/components/BaseMiniContextMenuItem.tsx @@ -1,5 +1,7 @@ -import React, {ForwardedRef} from 'react'; -import {PressableStateCallbackType, View} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React from 'react'; +import type {PressableStateCallbackType} from 'react-native'; +import { View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import DomUtils from '@libs/DomUtils'; diff --git a/src/components/BlockingViews/BlockingView.tsx b/src/components/BlockingViews/BlockingView.tsx index 3a038c58d886..e343e9b54ee4 100644 --- a/src/components/BlockingViews/BlockingView.tsx +++ b/src/components/BlockingViews/BlockingView.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {ImageSourcePropType, View} from 'react-native'; -import {SvgProps} from 'react-native-svg'; +import type {ImageSourcePropType} from 'react-native'; +import { View} from 'react-native'; +import type {SvgProps} from 'react-native-svg'; import AutoEmailLink from '@components/AutoEmailLink'; import Icon from '@components/Icon'; import Text from '@components/Text'; @@ -9,7 +10,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import variables from '@styles/variables'; -import {TranslationPaths} from '@src/languages/types'; +import type {TranslationPaths} from '@src/languages/types'; type BlockingViewProps = { /** Expensicon for the page */ diff --git a/src/components/BlockingViews/FullPageNotFoundView.tsx b/src/components/BlockingViews/FullPageNotFoundView.tsx index 6d7f838bf6c2..5993e60861f5 100644 --- a/src/components/BlockingViews/FullPageNotFoundView.tsx +++ b/src/components/BlockingViews/FullPageNotFoundView.tsx @@ -6,7 +6,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import variables from '@styles/variables'; -import {TranslationPaths} from '@src/languages/types'; +import type {TranslationPaths} from '@src/languages/types'; import ROUTES from '@src/ROUTES'; import BlockingView from './BlockingView'; diff --git a/src/components/BlockingViews/FullPageOfflineBlockingView.tsx b/src/components/BlockingViews/FullPageOfflineBlockingView.tsx index a9ebcf969ae5..787752dd4e72 100644 --- a/src/components/BlockingViews/FullPageOfflineBlockingView.tsx +++ b/src/components/BlockingViews/FullPageOfflineBlockingView.tsx @@ -3,7 +3,7 @@ import * as Expensicons from '@components/Icon/Expensicons'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useTheme from '@hooks/useTheme'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; import BlockingView from './BlockingView'; function FullPageOfflineBlockingView({children}: ChildrenProps) { diff --git a/src/components/Breadcrumbs.tsx b/src/components/Breadcrumbs.tsx index fa761218b4a0..fe623f773f99 100644 --- a/src/components/Breadcrumbs.tsx +++ b/src/components/Breadcrumbs.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import LogoComponent from '@assets/images/expensify-wordmark.svg'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx index c6f6cd619c09..993fdc579f0c 100644 --- a/src/components/Button/index.tsx +++ b/src/components/Button/index.tsx @@ -1,6 +1,8 @@ import {useIsFocused} from '@react-navigation/native'; -import React, {ForwardedRef, useCallback} from 'react'; -import {ActivityIndicator, GestureResponderEvent, StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { useCallback} from 'react'; +import type { GestureResponderEvent, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import {ActivityIndicator, View} from 'react-native'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import PressableWithFeedback from '@components/Pressable/PressableWithFeedback'; @@ -12,8 +14,8 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import HapticFeedback from '@libs/HapticFeedback'; import CONST from '@src/CONST'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; -import IconAsset from '@src/types/utils/IconAsset'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import type IconAsset from '@src/types/utils/IconAsset'; import validateSubmitShortcut from './validateSubmitShortcut'; type ButtonWithText = { diff --git a/src/components/Button/validateSubmitShortcut/index.native.ts b/src/components/Button/validateSubmitShortcut/index.native.ts index 7687855f109b..3f277ed208a1 100644 --- a/src/components/Button/validateSubmitShortcut/index.native.ts +++ b/src/components/Button/validateSubmitShortcut/index.native.ts @@ -1,4 +1,4 @@ -import ValidateSubmitShortcut from './types'; +import type ValidateSubmitShortcut from './types'; /** * Validate if the submit shortcut should be triggered depending on the button state diff --git a/src/components/Button/validateSubmitShortcut/index.ts b/src/components/Button/validateSubmitShortcut/index.ts index 55b3e44192e4..695c56af7bb7 100644 --- a/src/components/Button/validateSubmitShortcut/index.ts +++ b/src/components/Button/validateSubmitShortcut/index.ts @@ -1,4 +1,4 @@ -import ValidateSubmitShortcut from './types'; +import type ValidateSubmitShortcut from './types'; /** * Validate if the submit shortcut should be triggered depending on the button state diff --git a/src/components/Button/validateSubmitShortcut/types.ts b/src/components/Button/validateSubmitShortcut/types.ts index 9970e1478a4c..088718d0334e 100644 --- a/src/components/Button/validateSubmitShortcut/types.ts +++ b/src/components/Button/validateSubmitShortcut/types.ts @@ -1,4 +1,4 @@ -import {GestureResponderEvent} from 'react-native'; +import type {GestureResponderEvent} from 'react-native'; type ValidateSubmitShortcut = (isFocused: boolean, isDisabled: boolean, isLoading: boolean, event?: GestureResponderEvent | KeyboardEvent) => boolean; diff --git a/src/components/CardPreview.tsx b/src/components/CardPreview.tsx index 2196e6f441bb..827e2f99dd5a 100644 --- a/src/components/CardPreview.tsx +++ b/src/components/CardPreview.tsx @@ -1,12 +1,13 @@ import React from 'react'; import {View} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import ExpensifyCardImage from '@assets/images/expensify-card.svg'; import usePrivatePersonalDetails from '@hooks/usePrivatePersonalDetails'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PrivatePersonalDetails, Session} from '@src/types/onyx'; +import type {PrivatePersonalDetails, Session} from '@src/types/onyx'; import ImageSVG from './ImageSVG'; import Text from './Text'; diff --git a/src/components/Checkbox.tsx b/src/components/Checkbox.tsx index ac18b550501d..82038125f229 100644 --- a/src/components/Checkbox.tsx +++ b/src/components/Checkbox.tsx @@ -1,10 +1,12 @@ -import React, {type ForwardedRef, forwardRef, type MouseEventHandler, type KeyboardEvent as ReactKeyboardEvent} from 'react'; -import {GestureResponderEvent, StyleProp, View, ViewStyle} from 'react-native'; +import React, { forwardRef } from 'react'; +import type {ForwardedRef, MouseEventHandler, KeyboardEvent as ReactKeyboardEvent} from 'react'; +import type {GestureResponderEvent, StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; import Icon from './Icon'; import * as Expensicons from './Icon/Expensicons'; import PressableWithFeedback from './Pressable/PressableWithFeedback'; diff --git a/src/components/CheckboxWithLabel.tsx b/src/components/CheckboxWithLabel.tsx index 9660c9e1a2e5..5eb46939395d 100644 --- a/src/components/CheckboxWithLabel.tsx +++ b/src/components/CheckboxWithLabel.tsx @@ -1,5 +1,7 @@ -import React, {ComponentType, ForwardedRef, useState} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {ComponentType, ForwardedRef} from 'react'; +import React, { useState} from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; import Checkbox from './Checkbox'; diff --git a/src/components/CollapsibleSection/Collapsible/index.native.tsx b/src/components/CollapsibleSection/Collapsible/index.native.tsx index e8d3dc9439d0..63cb427f845f 100644 --- a/src/components/CollapsibleSection/Collapsible/index.native.tsx +++ b/src/components/CollapsibleSection/Collapsible/index.native.tsx @@ -1,6 +1,6 @@ import React from 'react'; import CollapsibleRN from 'react-native-collapsible'; -import CollapsibleProps from './types'; +import type CollapsibleProps from './types'; function Collapsible({isOpened = false, children}: CollapsibleProps) { return {children}; diff --git a/src/components/CollapsibleSection/Collapsible/index.tsx b/src/components/CollapsibleSection/Collapsible/index.tsx index 2585fd92f42b..5bf31c10ee68 100644 --- a/src/components/CollapsibleSection/Collapsible/index.tsx +++ b/src/components/CollapsibleSection/Collapsible/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import {Collapse} from 'react-collapse'; -import CollapsibleProps from './types'; +import type CollapsibleProps from './types'; function Collapsible({isOpened = false, children}: CollapsibleProps) { return {children}; diff --git a/src/components/CollapsibleSection/Collapsible/types.ts b/src/components/CollapsibleSection/Collapsible/types.ts index 8b8e8aba6860..a60b8d79f935 100644 --- a/src/components/CollapsibleSection/Collapsible/types.ts +++ b/src/components/CollapsibleSection/Collapsible/types.ts @@ -1,4 +1,4 @@ -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type CollapsibleProps = ChildrenProps & { /** Whether the section should start expanded. False by default */ diff --git a/src/components/CollapsibleSection/index.tsx b/src/components/CollapsibleSection/index.tsx index 18b24269b773..393a48e85616 100644 --- a/src/components/CollapsibleSection/index.tsx +++ b/src/components/CollapsibleSection/index.tsx @@ -7,7 +7,7 @@ import Text from '@components/Text'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; import Collapsible from './Collapsible'; type CollapsibleSectionProps = ChildrenProps & { diff --git a/src/components/ComposeProviders.tsx b/src/components/ComposeProviders.tsx index 2c73719358d8..8fc487c78251 100644 --- a/src/components/ComposeProviders.tsx +++ b/src/components/ComposeProviders.tsx @@ -1,5 +1,6 @@ -import React, {ComponentType, ReactNode} from 'react'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {ComponentType, ReactNode} from 'react'; +import React from 'react'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type ComposeProvidersProps = ChildrenProps & { /** Provider components go here */ diff --git a/src/components/Composer/index.android.tsx b/src/components/Composer/index.android.tsx index 46c2a5f06ded..f00f8b4aac24 100644 --- a/src/components/Composer/index.android.tsx +++ b/src/components/Composer/index.android.tsx @@ -1,10 +1,12 @@ -import React, {ForwardedRef, useCallback, useEffect, useMemo, useRef} from 'react'; -import {StyleSheet, TextInput} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { useCallback, useEffect, useMemo, useRef} from 'react'; +import type { TextInput} from 'react-native'; +import {StyleSheet} from 'react-native'; import RNTextInput from '@components/RNTextInput'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ComposerUtils from '@libs/ComposerUtils'; -import {ComposerProps} from './types'; +import type {ComposerProps} from './types'; function Composer( { diff --git a/src/components/Composer/index.ios.tsx b/src/components/Composer/index.ios.tsx index 240dfabded0b..c25212b74460 100644 --- a/src/components/Composer/index.ios.tsx +++ b/src/components/Composer/index.ios.tsx @@ -1,10 +1,12 @@ -import React, {ForwardedRef, useCallback, useEffect, useMemo, useRef} from 'react'; -import {StyleSheet, TextInput} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { useCallback, useEffect, useMemo, useRef} from 'react'; +import type { TextInput} from 'react-native'; +import {StyleSheet} from 'react-native'; import RNTextInput from '@components/RNTextInput'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ComposerUtils from '@libs/ComposerUtils'; -import {ComposerProps} from './types'; +import type {ComposerProps} from './types'; function Composer( { diff --git a/src/components/Composer/index.tsx b/src/components/Composer/index.tsx index 4ff5c6dbd75f..8f7f55b0a68d 100755 --- a/src/components/Composer/index.tsx +++ b/src/components/Composer/index.tsx @@ -1,9 +1,11 @@ import {useNavigation} from '@react-navigation/native'; import ExpensiMark from 'expensify-common/lib/ExpensiMark'; -import React, {BaseSyntheticEvent, ForwardedRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'; +import type {BaseSyntheticEvent, ForwardedRef} from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {flushSync} from 'react-dom'; -import {DimensionValue, NativeSyntheticEvent, Text as RNText, StyleSheet, TextInput, TextInputKeyPressEventData, TextInputProps, TextInputSelectionChangeEventData, View} from 'react-native'; -import {AnimatedProps} from 'react-native-reanimated'; +import type {DimensionValue, NativeSyntheticEvent, Text as RNText, TextInput, TextInputKeyPressEventData, TextInputProps, TextInputSelectionChangeEventData} from 'react-native'; +import { StyleSheet, View} from 'react-native'; +import type {AnimatedProps} from 'react-native-reanimated'; import RNTextInput from '@components/RNTextInput'; import Text from '@components/Text'; import useIsScrollBarVisible from '@hooks/useIsScrollBarVisible'; @@ -17,7 +19,7 @@ import updateIsFullComposerAvailable from '@libs/ComposerUtils/updateIsFullCompo import isEnterWhileComposition from '@libs/KeyboardShortcut/isEnterWhileComposition'; import ReportActionComposeFocusManager from '@libs/ReportActionComposeFocusManager'; import CONST from '@src/CONST'; -import {ComposerProps} from './types'; +import type {ComposerProps} from './types'; /** * Retrieves the characters from the specified cursor position up to the next space or new line. diff --git a/src/components/Composer/types.ts b/src/components/Composer/types.ts index cc0654b68019..bfdcb6715d40 100644 --- a/src/components/Composer/types.ts +++ b/src/components/Composer/types.ts @@ -1,4 +1,4 @@ -import {NativeSyntheticEvent, StyleProp, TextInputFocusEventData, TextInputKeyPressEventData, TextInputSelectionChangeEventData, TextStyle} from 'react-native'; +import type {NativeSyntheticEvent, StyleProp, TextInputFocusEventData, TextInputKeyPressEventData, TextInputSelectionChangeEventData, TextStyle} from 'react-native'; type TextSelection = { start: number; diff --git a/src/components/ConfirmContent.tsx b/src/components/ConfirmContent.tsx index 9e4ffa8720da..4e907065c9c0 100644 --- a/src/components/ConfirmContent.tsx +++ b/src/components/ConfirmContent.tsx @@ -1,11 +1,13 @@ -import React, {ReactNode} from 'react'; -import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {ReactNode} from 'react'; +import React from 'react'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; import Button from './Button'; import Header from './Header'; import Icon from './Icon'; diff --git a/src/components/ConfirmationPage.tsx b/src/components/ConfirmationPage.tsx index 21813edd693d..fe4036a4435f 100644 --- a/src/components/ConfirmationPage.tsx +++ b/src/components/ConfirmationPage.tsx @@ -5,7 +5,7 @@ import Button from './Button'; import FixedFooter from './FixedFooter'; import Lottie from './Lottie'; import LottieAnimations from './LottieAnimations'; -import DotLottieAnimation from './LottieAnimations/types'; +import type DotLottieAnimation from './LottieAnimations/types'; import Text from './Text'; type ConfirmationPageProps = { diff --git a/src/components/CopyTextToClipboard.tsx b/src/components/CopyTextToClipboard.tsx index 6f3b42e88fee..3c99a85fd0e7 100644 --- a/src/components/CopyTextToClipboard.tsx +++ b/src/components/CopyTextToClipboard.tsx @@ -1,5 +1,5 @@ import React, {useCallback} from 'react'; -import {AccessibilityRole, StyleProp, TextStyle} from 'react-native'; +import type {AccessibilityRole, StyleProp, TextStyle} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import Clipboard from '@libs/Clipboard'; import * as Expensicons from './Icon/Expensicons'; diff --git a/src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx b/src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx index 02c308705994..367e54e8be64 100644 --- a/src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx +++ b/src/components/CurrentUserPersonalDetailsSkeletonView/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import {Circle, Rect} from 'react-native-svg'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import SkeletonViewContentLoader from '@components/SkeletonViewContentLoader'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/CurrentWalletBalance.tsx b/src/components/CurrentWalletBalance.tsx index 28a83fb1ae50..6808ebbcbc1a 100644 --- a/src/components/CurrentWalletBalance.tsx +++ b/src/components/CurrentWalletBalance.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import {StyleProp, TextStyle} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {StyleProp, TextStyle} from 'react-native'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import ONYXKEYS from '@src/ONYXKEYS'; -import UserWallet from '@src/types/onyx/UserWallet'; +import type UserWallet from '@src/types/onyx/UserWallet'; import Text from './Text'; type CurrentWalletBalanceOnyxProps = { diff --git a/src/components/CustomDevMenu/index.native.tsx b/src/components/CustomDevMenu/index.native.tsx index d8a0ea987171..54f1336b4fef 100644 --- a/src/components/CustomDevMenu/index.native.tsx +++ b/src/components/CustomDevMenu/index.native.tsx @@ -1,7 +1,7 @@ import {useEffect} from 'react'; import DevMenu from 'react-native-dev-menu'; import toggleTestToolsModal from '@userActions/TestTool'; -import CustomDevMenuElement from './types'; +import type CustomDevMenuElement from './types'; const CustomDevMenu: CustomDevMenuElement = Object.assign( () => { diff --git a/src/components/CustomDevMenu/index.tsx b/src/components/CustomDevMenu/index.tsx index c8eae861b676..4306d0cae090 100644 --- a/src/components/CustomDevMenu/index.tsx +++ b/src/components/CustomDevMenu/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import CustomDevMenuElement from './types'; +import type CustomDevMenuElement from './types'; const CustomDevMenu: CustomDevMenuElement = Object.assign(() => <>, {displayName: 'CustomDevMenu'}); diff --git a/src/components/CustomDevMenu/types.ts b/src/components/CustomDevMenu/types.ts index bdfc800a17f0..17e2b30ef4f6 100644 --- a/src/components/CustomDevMenu/types.ts +++ b/src/components/CustomDevMenu/types.ts @@ -1,4 +1,4 @@ -import {ReactElement} from 'react'; +import type {ReactElement} from 'react'; type CustomDevMenuElement = { (): ReactElement; diff --git a/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/index.website.ts b/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/index.website.ts index 481d866dbe4f..f92016048bde 100644 --- a/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/index.website.ts +++ b/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/index.website.ts @@ -1,4 +1,4 @@ -import UpdateGlobalBackgroundColor from './types'; +import type UpdateGlobalBackgroundColor from './types'; const updateGlobalBackgroundColor: UpdateGlobalBackgroundColor = (theme) => { const htmlElement = document.getElementsByTagName('html')[0]; diff --git a/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/types.ts b/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/types.ts index 83bd36a9428a..078703e3846d 100644 --- a/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/types.ts +++ b/src/components/CustomStatusBarAndBackground/updateGlobalBackgroundColor/types.ts @@ -1,4 +1,4 @@ -import {ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; type UpdateGlobalBackgroundColor = (theme: ThemeColors) => void; diff --git a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.android.ts b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.android.ts index b7651d4549de..c25f45bfb050 100644 --- a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.android.ts +++ b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.android.ts @@ -1,5 +1,5 @@ import StatusBar from '@libs/StatusBar'; -import UpdateStatusBarAppearanceProps from './types'; +import type UpdateStatusBarAppearanceProps from './types'; // eslint-disable-next-line @typescript-eslint/naming-convention export default function updateStatusBarAppearance({statusBarStyle}: UpdateStatusBarAppearanceProps) { diff --git a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ios.ts b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ios.ts index 61fcb056bba5..e887b5f0a98b 100644 --- a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ios.ts +++ b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ios.ts @@ -1,5 +1,5 @@ import StatusBar from '@libs/StatusBar'; -import UpdateStatusBarAppearanceProps from './types'; +import type UpdateStatusBarAppearanceProps from './types'; // eslint-disable-next-line @typescript-eslint/naming-convention export default function updateStatusBarAppearance({statusBarStyle}: UpdateStatusBarAppearanceProps) { diff --git a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ts b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ts index 574efd90f0b5..a11b3619f8d9 100644 --- a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ts +++ b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/index.ts @@ -1,5 +1,5 @@ import StatusBar from '@libs/StatusBar'; -import UpdateStatusBarAppearanceProps from './types'; +import type UpdateStatusBarAppearanceProps from './types'; export default function updateStatusBarAppearance({backgroundColor, statusBarStyle}: UpdateStatusBarAppearanceProps) { if (backgroundColor) { diff --git a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/types.ts b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/types.ts index 823f0059eccf..775082187395 100644 --- a/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/types.ts +++ b/src/components/CustomStatusBarAndBackground/updateStatusBarAppearance/types.ts @@ -1,4 +1,4 @@ -import {StatusBarStyle} from '@styles/index'; +import type {StatusBarStyle} from '@styles/index'; type UpdateStatusBarAppearanceProps = { backgroundColor?: string; diff --git a/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx b/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx index 0e8996bf5022..edc55aeafef6 100644 --- a/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx +++ b/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx @@ -1,6 +1,7 @@ import React from 'react'; import {View} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import * as Illustrations from '@components/Icon/Illustrations'; @@ -12,7 +13,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; type DeeplinkRedirectLoadingIndicatorOnyxProps = { /** Current user session */ diff --git a/src/components/DeeplinkWrapper/index.tsx b/src/components/DeeplinkWrapper/index.tsx index 4b0382bd6b14..076e6b91460d 100644 --- a/src/components/DeeplinkWrapper/index.tsx +++ b/src/components/DeeplinkWrapper/index.tsx @@ -1,4 +1,4 @@ -import DeeplinkWrapperProps from './types'; +import type DeeplinkWrapperProps from './types'; function DeeplinkWrapper({children}: DeeplinkWrapperProps) { return children; diff --git a/src/components/DeeplinkWrapper/index.website.tsx b/src/components/DeeplinkWrapper/index.website.tsx index 2cae91e2f2a0..1d509666ec98 100644 --- a/src/components/DeeplinkWrapper/index.website.tsx +++ b/src/components/DeeplinkWrapper/index.website.tsx @@ -8,7 +8,7 @@ import * as App from '@userActions/App'; import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; -import DeeplinkWrapperProps from './types'; +import type DeeplinkWrapperProps from './types'; function isMacOSWeb(): boolean { return !Browser.isMobile() && typeof navigator === 'object' && typeof navigator.userAgent === 'string' && /Mac/i.test(navigator.userAgent) && !/Electron/i.test(navigator.userAgent); diff --git a/src/components/DeeplinkWrapper/types.ts b/src/components/DeeplinkWrapper/types.ts index dfd56b62573d..db61e5b01c24 100644 --- a/src/components/DeeplinkWrapper/types.ts +++ b/src/components/DeeplinkWrapper/types.ts @@ -1,4 +1,4 @@ -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type DeeplinkWrapperProps = ChildrenProps & { /** User authentication status */ diff --git a/src/components/DisplayNames/DisplayNamesTooltipItem.tsx b/src/components/DisplayNames/DisplayNamesTooltipItem.tsx index 440457d22965..db6023b0215e 100644 --- a/src/components/DisplayNames/DisplayNamesTooltipItem.tsx +++ b/src/components/DisplayNames/DisplayNamesTooltipItem.tsx @@ -1,9 +1,10 @@ -import React, {RefObject, useCallback} from 'react'; -import {Text as RNText, StyleProp, TextStyle} from 'react-native'; +import type {RefObject} from 'react'; +import React, { useCallback} from 'react'; +import type {Text as RNText, StyleProp, TextStyle} from 'react-native'; import Text from '@components/Text'; import UserDetailsTooltip from '@components/UserDetailsTooltip'; import useThemeStyles from '@hooks/useThemeStyles'; -import {AvatarSource} from '@libs/UserUtils'; +import type {AvatarSource} from '@libs/UserUtils'; type DisplayNamesTooltipItemProps = { index?: number; diff --git a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx index 43061ada9a94..62da9a97a724 100644 --- a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx +++ b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx @@ -1,10 +1,11 @@ import React, {Fragment, useCallback, useRef} from 'react'; -import {Text as RNText, View} from 'react-native'; +import type {Text as RNText} from 'react-native'; +import { View} from 'react-native'; import Text from '@components/Text'; import Tooltip from '@components/Tooltip'; import useThemeStyles from '@hooks/useThemeStyles'; import DisplayNamesTooltipItem from './DisplayNamesTooltipItem'; -import DisplayNamesProps from './types'; +import type DisplayNamesProps from './types'; type HTMLElementWithText = HTMLElement & RNText; diff --git a/src/components/DisplayNames/DisplayNamesWithoutTooltip.tsx b/src/components/DisplayNames/DisplayNamesWithoutTooltip.tsx index 761b0b66ee2c..177bdb6a9fc4 100644 --- a/src/components/DisplayNames/DisplayNamesWithoutTooltip.tsx +++ b/src/components/DisplayNames/DisplayNamesWithoutTooltip.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {StyleProp, TextStyle} from 'react-native'; +import type {StyleProp, TextStyle} from 'react-native'; import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/DisplayNames/index.native.tsx b/src/components/DisplayNames/index.native.tsx index 8f1fef37a6ba..b3eceb794bcb 100644 --- a/src/components/DisplayNames/index.native.tsx +++ b/src/components/DisplayNames/index.native.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; -import DisplayNamesProps from './types'; +import type DisplayNamesProps from './types'; // As we don't have to show tooltips of the Native platform so we simply render the full display names list. function DisplayNames({accessibilityLabel, fullTitle, textStyles = [], numberOfLines = 1}: DisplayNamesProps) { diff --git a/src/components/DisplayNames/index.tsx b/src/components/DisplayNames/index.tsx index 7ff1081937d5..155193368cc5 100644 --- a/src/components/DisplayNames/index.tsx +++ b/src/components/DisplayNames/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import useLocalize from '@hooks/useLocalize'; import DisplayNamesWithoutTooltip from './DisplayNamesWithoutTooltip'; import DisplayNamesWithToolTip from './DisplayNamesWithTooltip'; -import DisplayNamesProps from './types'; +import type DisplayNamesProps from './types'; function DisplayNames({fullTitle, tooltipEnabled, textStyles, numberOfLines, shouldUseFullTitle, displayNamesWithTooltips}: DisplayNamesProps) { const {translate} = useLocalize(); diff --git a/src/components/DisplayNames/types.ts b/src/components/DisplayNames/types.ts index 5137d6f54108..b0959d43aa96 100644 --- a/src/components/DisplayNames/types.ts +++ b/src/components/DisplayNames/types.ts @@ -1,4 +1,4 @@ -import {StyleProp, TextStyle} from 'react-native'; +import type {StyleProp, TextStyle} from 'react-native'; import type {AvatarSource} from '@libs/UserUtils'; type DisplayNameWithTooltip = { diff --git a/src/components/DistanceMapView/index.android.tsx b/src/components/DistanceMapView/index.android.tsx index 38e92163c3eb..168a480c6100 100644 --- a/src/components/DistanceMapView/index.android.tsx +++ b/src/components/DistanceMapView/index.android.tsx @@ -6,7 +6,7 @@ import MapView from '@components/MapView'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useThemeStyles from '@hooks/useThemeStyles'; -import DistanceMapViewProps from './types'; +import type DistanceMapViewProps from './types'; function DistanceMapView({overlayStyle, ...rest}: DistanceMapViewProps) { const styles = useThemeStyles(); diff --git a/src/components/DistanceMapView/index.tsx b/src/components/DistanceMapView/index.tsx index 2abdc29865b0..3f1b3b8439ed 100644 --- a/src/components/DistanceMapView/index.tsx +++ b/src/components/DistanceMapView/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import MapView from '@components/MapView'; -import DistanceMapViewProps from './types'; +import type DistanceMapViewProps from './types'; function DistanceMapView({overlayStyle, ...rest}: DistanceMapViewProps) { // eslint-disable-next-line react/jsx-props-no-spreading diff --git a/src/components/DistanceMapView/types.ts b/src/components/DistanceMapView/types.ts index 5ab3dbd8238e..18213235445f 100644 --- a/src/components/DistanceMapView/types.ts +++ b/src/components/DistanceMapView/types.ts @@ -1,4 +1,4 @@ -import {StyleProp, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import type {MapViewProps} from '@components/MapView/MapViewTypes'; type DistanceMapViewProps = MapViewProps & { diff --git a/src/components/DotIndicatorMessage.tsx b/src/components/DotIndicatorMessage.tsx index 2787804c5f76..11bc6d53b8fa 100644 --- a/src/components/DotIndicatorMessage.tsx +++ b/src/components/DotIndicatorMessage.tsx @@ -1,6 +1,7 @@ /* eslint-disable react/no-array-index-key */ import React from 'react'; -import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/DragAndDrop/Consumer/types.ts b/src/components/DragAndDrop/Consumer/types.ts index 1f85f32a0153..03bdee3f23d8 100644 --- a/src/components/DragAndDrop/Consumer/types.ts +++ b/src/components/DragAndDrop/Consumer/types.ts @@ -1,4 +1,4 @@ -import {ReactNode} from 'react'; +import type {ReactNode} from 'react'; type DragAndDropConsumerProps = { /** Children to render inside this component. */ diff --git a/src/components/DragAndDrop/NoDropZone/types.ts b/src/components/DragAndDrop/NoDropZone/types.ts index 09715ecd942f..0735f4936ada 100644 --- a/src/components/DragAndDrop/NoDropZone/types.ts +++ b/src/components/DragAndDrop/NoDropZone/types.ts @@ -1,4 +1,4 @@ -import {ReactNode} from 'react'; +import type {ReactNode} from 'react'; type NoDropZoneProps = { /** Content */ diff --git a/src/components/DragAndDrop/Provider/types.ts b/src/components/DragAndDrop/Provider/types.ts index eae83d10682a..b4394056cac5 100644 --- a/src/components/DragAndDrop/Provider/types.ts +++ b/src/components/DragAndDrop/Provider/types.ts @@ -1,4 +1,4 @@ -import {ReactNode} from 'react'; +import type {ReactNode} from 'react'; type DragAndDropProviderProps = { /** Children to render inside this component. */ diff --git a/src/components/DraggableList/index.native.tsx b/src/components/DraggableList/index.native.tsx index f532b21720da..7cf33112bece 100644 --- a/src/components/DraggableList/index.native.tsx +++ b/src/components/DraggableList/index.native.tsx @@ -1,6 +1,6 @@ import React from 'react'; import DraggableFlatList from 'react-native-draggable-flatlist'; -import {FlatList} from 'react-native-gesture-handler'; +import type {FlatList} from 'react-native-gesture-handler'; import useThemeStyles from '@hooks/useThemeStyles'; import type {DraggableListProps} from './types'; diff --git a/src/components/DraggableList/index.tsx b/src/components/DraggableList/index.tsx index b92691075424..69a46ba47d5f 100644 --- a/src/components/DraggableList/index.tsx +++ b/src/components/DraggableList/index.tsx @@ -1,5 +1,6 @@ import React, {useCallback} from 'react'; -import {DragDropContext, Draggable, Droppable, type OnDragEndResponder} from 'react-beautiful-dnd'; +import {DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'; +import type {OnDragEndResponder} from 'react-beautiful-dnd'; import {ScrollView} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import type {DraggableListProps} from './types'; diff --git a/src/components/EmojiSuggestions.tsx b/src/components/EmojiSuggestions.tsx index 2fcf8e827b4e..3a71abce01c9 100644 --- a/src/components/EmojiSuggestions.tsx +++ b/src/components/EmojiSuggestions.tsx @@ -1,4 +1,5 @@ -import React, {ReactElement, useCallback} from 'react'; +import type {ReactElement} from 'react'; +import React, { useCallback} from 'react'; import {View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/ErrorBoundary/BaseErrorBoundary.tsx b/src/components/ErrorBoundary/BaseErrorBoundary.tsx index 2a6524d5a993..6a0f1a0ae55e 100644 --- a/src/components/ErrorBoundary/BaseErrorBoundary.tsx +++ b/src/components/ErrorBoundary/BaseErrorBoundary.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {ErrorBoundary} from 'react-error-boundary'; import BootSplash from '@libs/BootSplash'; import GenericErrorPage from '@pages/ErrorPage/GenericErrorPage'; -import {BaseErrorBoundaryProps, LogError} from './types'; +import type {BaseErrorBoundaryProps, LogError} from './types'; /** * This component captures an error in the child component tree and logs it to the server diff --git a/src/components/ErrorBoundary/index.native.tsx b/src/components/ErrorBoundary/index.native.tsx index b8e56ee528c2..5e0c9ca9af38 100644 --- a/src/components/ErrorBoundary/index.native.tsx +++ b/src/components/ErrorBoundary/index.native.tsx @@ -2,7 +2,7 @@ import crashlytics from '@react-native-firebase/crashlytics'; import React from 'react'; import Log from '@libs/Log'; import BaseErrorBoundary from './BaseErrorBoundary'; -import {BaseErrorBoundaryProps, LogError} from './types'; +import type {BaseErrorBoundaryProps, LogError} from './types'; const logError: LogError = (errorMessage, error, errorInfo) => { // Log the error to the server diff --git a/src/components/ErrorBoundary/index.tsx b/src/components/ErrorBoundary/index.tsx index fce70674dd97..890cf5f4e587 100644 --- a/src/components/ErrorBoundary/index.tsx +++ b/src/components/ErrorBoundary/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Log from '@libs//Log'; import BaseErrorBoundary from './BaseErrorBoundary'; -import {BaseErrorBoundaryProps, LogError} from './types'; +import type {BaseErrorBoundaryProps, LogError} from './types'; const logError: LogError = (errorMessage, error, errorInfo) => { // Log the error to the server diff --git a/src/components/ExpensifyWordmark.tsx b/src/components/ExpensifyWordmark.tsx index 798907c7eeb6..3ef5f283b200 100644 --- a/src/components/ExpensifyWordmark.tsx +++ b/src/components/ExpensifyWordmark.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import AdHocLogo from '@assets/images/expensify-logo--adhoc.svg'; import DevLogo from '@assets/images/expensify-logo--dev.svg'; import StagingLogo from '@assets/images/expensify-logo--staging.svg'; diff --git a/src/components/FixedFooter.tsx b/src/components/FixedFooter.tsx index 7fd6811c1df6..484113b0ca7d 100644 --- a/src/components/FixedFooter.tsx +++ b/src/components/FixedFooter.tsx @@ -1,5 +1,7 @@ -import React, {ReactNode} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {ReactNode} from 'react'; +import React from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; type FixedFooterProps = { diff --git a/src/components/FlatList/index.android.tsx b/src/components/FlatList/index.android.tsx index 84345f6e0ed4..3940e23c3667 100644 --- a/src/components/FlatList/index.android.tsx +++ b/src/components/FlatList/index.android.tsx @@ -1,6 +1,8 @@ import {useFocusEffect} from '@react-navigation/native'; -import React, {ForwardedRef, forwardRef, useCallback, useContext} from 'react'; -import {FlatList, FlatListProps} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef, useCallback, useContext} from 'react'; +import type { FlatListProps} from 'react-native'; +import {FlatList} from 'react-native'; import {ActionListContext} from '@pages/home/ReportScreenContext'; // FlatList wrapped with the freeze component will lose its scroll state when frozen (only for Android). diff --git a/src/components/FormAlertWithSubmitButton.tsx b/src/components/FormAlertWithSubmitButton.tsx index d8e30b27371d..56c1cd05cade 100644 --- a/src/components/FormAlertWithSubmitButton.tsx +++ b/src/components/FormAlertWithSubmitButton.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import Button from './Button'; import FormAlertWrapper from './FormAlertWrapper'; diff --git a/src/components/FormAlertWrapper.tsx b/src/components/FormAlertWrapper.tsx index a144bf069502..2811cdab65fa 100644 --- a/src/components/FormAlertWrapper.tsx +++ b/src/components/FormAlertWrapper.tsx @@ -1,8 +1,10 @@ -import React, {ReactNode} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {ReactNode} from 'react'; +import React from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; -import Network from '@src/types/onyx/Network'; +import type Network from '@src/types/onyx/Network'; import FormHelpMessage from './FormHelpMessage'; import {withNetwork} from './OnyxProvider'; import RenderHTML from './RenderHTML'; diff --git a/src/components/FormElement.tsx b/src/components/FormElement.tsx index c61a09b9d1ec..dc7792c5e443 100644 --- a/src/components/FormElement.tsx +++ b/src/components/FormElement.tsx @@ -1,5 +1,7 @@ -import React, {ForwardedRef, forwardRef} from 'react'; -import {View, ViewProps} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; +import type { ViewProps} from 'react-native'; +import {View} from 'react-native'; import * as ComponentUtils from '@libs/ComponentUtils'; function FormElement(props: ViewProps, ref: ForwardedRef) { diff --git a/src/components/FormHelpMessage.tsx b/src/components/FormHelpMessage.tsx index 43709b51db44..6675f038c105 100644 --- a/src/components/FormHelpMessage.tsx +++ b/src/components/FormHelpMessage.tsx @@ -1,6 +1,7 @@ import isEmpty from 'lodash/isEmpty'; import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Localize from '@libs/Localize'; diff --git a/src/components/FormScrollView.tsx b/src/components/FormScrollView.tsx index 4646a534e750..0b8583ec1071 100644 --- a/src/components/FormScrollView.tsx +++ b/src/components/FormScrollView.tsx @@ -1,5 +1,7 @@ -import React, {ForwardedRef} from 'react'; -import {ScrollView, ScrollViewProps} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React from 'react'; +import type { ScrollViewProps} from 'react-native'; +import {ScrollView} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; type FormScrollViewProps = ScrollViewProps & { diff --git a/src/components/FormSubmit/index.native.tsx b/src/components/FormSubmit/index.native.tsx index 22bf5353949d..5eae7b51d988 100644 --- a/src/components/FormSubmit/index.native.tsx +++ b/src/components/FormSubmit/index.native.tsx @@ -1,6 +1,6 @@ import React from 'react'; import {View} from 'react-native'; -import {FormSubmitProps, FormSubmitRef} from './types'; +import type {FormSubmitProps, FormSubmitRef} from './types'; function FormSubmit({style, children}: FormSubmitProps, ref: FormSubmitRef) { return ( diff --git a/src/components/FormSubmit/index.tsx b/src/components/FormSubmit/index.tsx index ef3f3c39bbaa..1adbfa288403 100644 --- a/src/components/FormSubmit/index.tsx +++ b/src/components/FormSubmit/index.tsx @@ -1,9 +1,10 @@ -import React, {KeyboardEvent, useEffect} from 'react'; +import type {KeyboardEvent} from 'react'; +import React, { useEffect} from 'react'; import {View} from 'react-native'; import * as ComponentUtils from '@libs/ComponentUtils'; import isEnterWhileComposition from '@libs/KeyboardShortcut/isEnterWhileComposition'; import CONST from '@src/CONST'; -import {FormSubmitProps, FormSubmitRef} from './types'; +import type {FormSubmitProps, FormSubmitRef} from './types'; function FormSubmit({children, onSubmit, style}: FormSubmitProps, ref: FormSubmitRef) { /** diff --git a/src/components/FormSubmit/types.ts b/src/components/FormSubmit/types.ts index 20910647ecb8..722a3fbf746e 100644 --- a/src/components/FormSubmit/types.ts +++ b/src/components/FormSubmit/types.ts @@ -1,5 +1,6 @@ -import React, {ForwardedRef} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {ForwardedRef} from 'react'; +import type React from 'react'; +import type {StyleProp, View, ViewStyle} from 'react-native'; type FormSubmitProps = { children: React.ReactNode; diff --git a/src/components/FullscreenLoadingIndicator.tsx b/src/components/FullscreenLoadingIndicator.tsx index 2b5f7b3ada72..143476a02446 100644 --- a/src/components/FullscreenLoadingIndicator.tsx +++ b/src/components/FullscreenLoadingIndicator.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {ActivityIndicator, StyleProp, StyleSheet, View, ViewStyle} from 'react-native'; +import type { StyleProp, ViewStyle} from 'react-native'; +import {ActivityIndicator, StyleSheet, View} from 'react-native'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 4eac2c7a6994..01199c0a0559 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,5 +1,7 @@ -import React, {ReactNode} from 'react'; -import {StyleProp, TextStyle, View} from 'react-native'; +import type {ReactNode} from 'react'; +import React from 'react'; +import type {StyleProp, TextStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import EnvironmentBadge from './EnvironmentBadge'; import Text from './Text'; diff --git a/src/components/HeaderGap/types.ts b/src/components/HeaderGap/types.ts index 55a202c2e48c..1333ceac6198 100644 --- a/src/components/HeaderGap/types.ts +++ b/src/components/HeaderGap/types.ts @@ -1,5 +1,5 @@ -import {ReactNode} from 'react'; -import {StyleProp, ViewStyle} from 'react-native'; +import type {ReactNode} from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; type HeaderGapProps = { styles?: StyleProp; diff --git a/src/components/HeaderWithBackButton/index.tsx b/src/components/HeaderWithBackButton/index.tsx index 9ec8bca55a95..209803f2a5d1 100755 --- a/src/components/HeaderWithBackButton/index.tsx +++ b/src/components/HeaderWithBackButton/index.tsx @@ -19,7 +19,7 @@ import getButtonState from '@libs/getButtonState'; import Navigation from '@libs/Navigation/Navigation'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; -import HeaderWithBackButtonProps from './types'; +import type HeaderWithBackButtonProps from './types'; function HeaderWithBackButton({ iconFill, diff --git a/src/components/HeaderWithBackButton/types.ts b/src/components/HeaderWithBackButton/types.ts index 99e93e8d18d2..9ffb0b5ef2f3 100644 --- a/src/components/HeaderWithBackButton/types.ts +++ b/src/components/HeaderWithBackButton/types.ts @@ -1,5 +1,5 @@ -import {ReactNode} from 'react'; -import {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import type {ReactNode} from 'react'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import type {Action} from '@hooks/useSingleExecution'; import type {StepCounterParams} from '@src/languages/types'; import type {AnchorPosition} from '@src/styles'; diff --git a/src/components/Hoverable/index.native.tsx b/src/components/Hoverable/index.native.tsx index b3d49db9d96e..47268e0f440a 100644 --- a/src/components/Hoverable/index.native.tsx +++ b/src/components/Hoverable/index.native.tsx @@ -1,6 +1,6 @@ import React from 'react'; import {View} from 'react-native'; -import HoverableProps from './types'; +import type HoverableProps from './types'; /** * On mobile, there is no concept of hovering, so we return a plain wrapper around the component's children, diff --git a/src/components/Hoverable/index.tsx b/src/components/Hoverable/index.tsx index 9c641cfc19be..e001f00ea968 100644 --- a/src/components/Hoverable/index.tsx +++ b/src/components/Hoverable/index.tsx @@ -1,8 +1,9 @@ -import React, {ForwardedRef, forwardRef, MutableRefObject, ReactElement, RefAttributes, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; +import type {ForwardedRef, MutableRefObject, ReactElement, RefAttributes} from 'react'; +import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; import {DeviceEventEmitter} from 'react-native'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; import CONST from '@src/CONST'; -import HoverableProps from './types'; +import type HoverableProps from './types'; /** * Maps the children of a Hoverable component to diff --git a/src/components/Hoverable/types.ts b/src/components/Hoverable/types.ts index 430b865f50c5..3b1d5fad4111 100644 --- a/src/components/Hoverable/types.ts +++ b/src/components/Hoverable/types.ts @@ -1,4 +1,4 @@ -import {ReactElement} from 'react'; +import type {ReactElement} from 'react'; type HoverableProps = { /** Children to wrap with Hoverable. */ diff --git a/src/components/IFrame.tsx b/src/components/IFrame.tsx index 7520ad869507..b9943811d48d 100644 --- a/src/components/IFrame.tsx +++ b/src/components/IFrame.tsx @@ -1,7 +1,8 @@ import React, {useEffect, useState} from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Session} from '@src/types/onyx'; +import type {Session} from '@src/types/onyx'; type OldDotIFrameOnyxProps = { session: OnyxEntry; diff --git a/src/components/Icon/BankIcons/index.native.ts b/src/components/Icon/BankIcons/index.native.ts index 2011b71588af..cc4660f59392 100644 --- a/src/components/Icon/BankIcons/index.native.ts +++ b/src/components/Icon/BankIcons/index.native.ts @@ -1,9 +1,10 @@ import GenericBank from '@assets/images/bankicons/generic-bank-account.svg'; import GenericBankCard from '@assets/images/cardicons/generic-bank-card.svg'; -import {BankIconParams, getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; +import type {BankIconParams} from '@components/Icon/BankIconsUtils'; +import { getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; import variables from '@styles/variables'; import CONST from '@src/CONST'; -import {BankIcon} from '@src/types/onyx/Bank'; +import type {BankIcon} from '@src/types/onyx/Bank'; /** * Returns Bank Icon Object that matches to existing bank icons or default icons diff --git a/src/components/Icon/BankIcons/index.ts b/src/components/Icon/BankIcons/index.ts index 0e0935b103e4..379fba482613 100644 --- a/src/components/Icon/BankIcons/index.ts +++ b/src/components/Icon/BankIcons/index.ts @@ -1,10 +1,11 @@ import GenericBank from '@assets/images/bankicons/generic-bank-account.svg'; import GenericBankCard from '@assets/images/cardicons/generic-bank-card.svg'; -import {BankIconParams, getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; +import type {BankIconParams} from '@components/Icon/BankIconsUtils'; +import { getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; import variables from '@styles/variables'; import CONST from '@src/CONST'; -import {BankIcon} from '@src/types/onyx/Bank'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {BankIcon} from '@src/types/onyx/Bank'; +import type IconAsset from '@src/types/utils/IconAsset'; /** * It's a wrapper type for a bank icon asset. Bank icons are imported using require(), on the web platform after importing in this way it's necessary to use the property "default" diff --git a/src/components/Icon/BankIconsUtils.ts b/src/components/Icon/BankIconsUtils.ts index cc877ef9ef6f..c91ec030c9ba 100644 --- a/src/components/Icon/BankIconsUtils.ts +++ b/src/components/Icon/BankIconsUtils.ts @@ -1,7 +1,7 @@ -import {type ThemeStyles} from '@styles/index'; +import type {ThemeStyles} from '@styles/index'; import CONST from '@src/CONST'; -import {BankName, BankNameKey} from '@src/types/onyx/Bank'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {BankName, BankNameKey} from '@src/types/onyx/Bank'; +import type IconAsset from '@src/types/utils/IconAsset'; type BankIconParams = { styles: ThemeStyles; diff --git a/src/components/Icon/IconWrapperStyles/index.ios.ts b/src/components/Icon/IconWrapperStyles/index.ios.ts index 9507502d9d26..b039cff95f58 100644 --- a/src/components/Icon/IconWrapperStyles/index.ios.ts +++ b/src/components/Icon/IconWrapperStyles/index.ios.ts @@ -1,4 +1,4 @@ -import IconWrapperStyle from './types'; +import type IconWrapperStyle from './types'; const style: IconWrapperStyle = { top: 1, diff --git a/src/components/Icon/IconWrapperStyles/index.ts b/src/components/Icon/IconWrapperStyles/index.ts index 541a2c296c17..2c4be7b706e8 100644 --- a/src/components/Icon/IconWrapperStyles/index.ts +++ b/src/components/Icon/IconWrapperStyles/index.ts @@ -1,4 +1,4 @@ -import IconWrapperStyle from './types'; +import type IconWrapperStyle from './types'; const style: IconWrapperStyle = { top: 2, diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx index 732fe90deae2..b4528df660d8 100644 --- a/src/components/Icon/index.tsx +++ b/src/components/Icon/index.tsx @@ -1,11 +1,12 @@ -import {ImageContentFit} from 'expo-image'; +import type {ImageContentFit} from 'expo-image'; import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import ImageSVG from '@components/ImageSVG'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; import IconWrapperStyles from './IconWrapperStyles'; type IconProps = { diff --git a/src/components/ImageSVG/index.native.tsx b/src/components/ImageSVG/index.native.tsx index c397e047b7e0..bdd0b3830a22 100644 --- a/src/components/ImageSVG/index.native.tsx +++ b/src/components/ImageSVG/index.native.tsx @@ -1,7 +1,7 @@ import {Image} from 'expo-image'; import React from 'react'; -import {ImageSourcePropType} from 'react-native'; -import ImageSVGProps from './types'; +import type {ImageSourcePropType} from 'react-native'; +import type ImageSVGProps from './types'; function ImageSVG({src, width = '100%', height = '100%', fill, contentFit = 'cover', style}: ImageSVGProps) { const tintColorProp = fill ? {tintColor: fill} : {}; diff --git a/src/components/ImageSVG/index.tsx b/src/components/ImageSVG/index.tsx index 32d83fdcadd3..3ce04a1a190a 100644 --- a/src/components/ImageSVG/index.tsx +++ b/src/components/ImageSVG/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {SvgProps} from 'react-native-svg'; -import ImageSVGProps from './types'; +import type {SvgProps} from 'react-native-svg'; +import type ImageSVGProps from './types'; function ImageSVG({src, width = '100%', height = '100%', fill, hovered = false, pressed = false, style, pointerEvents, preserveAspectRatio}: ImageSVGProps) { const ImageSvgComponent = src as React.FC; diff --git a/src/components/ImageSVG/types.ts b/src/components/ImageSVG/types.ts index cc580651c30c..341934852303 100644 --- a/src/components/ImageSVG/types.ts +++ b/src/components/ImageSVG/types.ts @@ -1,6 +1,6 @@ -import {ImageContentFit, ImageStyle} from 'expo-image'; -import {StyleProp, ViewStyle} from 'react-native'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {ImageContentFit, ImageStyle} from 'expo-image'; +import type {StyleProp, ViewStyle} from 'react-native'; +import type IconAsset from '@src/types/utils/IconAsset'; type ImageSVGProps = { /** The asset to render. */ diff --git a/src/components/ImageWithSizeCalculation.tsx b/src/components/ImageWithSizeCalculation.tsx index af803bb360ee..b488fd461f29 100644 --- a/src/components/ImageWithSizeCalculation.tsx +++ b/src/components/ImageWithSizeCalculation.tsx @@ -1,6 +1,7 @@ import delay from 'lodash/delay'; import React, {useEffect, useRef, useState} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import Log from '@libs/Log'; import FullscreenLoadingIndicator from './FullscreenLoadingIndicator'; diff --git a/src/components/Indicator.tsx b/src/components/Indicator.tsx index 7b7eae97fd86..d736000feb00 100644 --- a/src/components/Indicator.tsx +++ b/src/components/Indicator.tsx @@ -1,7 +1,8 @@ import React from 'react'; import {StyleSheet, View} from 'react-native'; -import {OnyxCollection, withOnyx} from 'react-native-onyx'; -import {OnyxEntry} from 'react-native-onyx/lib/types'; +import type {OnyxCollection} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx/lib/types'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as PolicyUtils from '@libs/PolicyUtils'; diff --git a/src/components/InlineCodeBlock/WrappedText.tsx b/src/components/InlineCodeBlock/WrappedText.tsx index 1c66cef234ed..c8ba754853a9 100644 --- a/src/components/InlineCodeBlock/WrappedText.tsx +++ b/src/components/InlineCodeBlock/WrappedText.tsx @@ -1,5 +1,6 @@ import React, {Fragment} from 'react'; -import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; diff --git a/src/components/InlineCodeBlock/types.ts b/src/components/InlineCodeBlock/types.ts index a100177e41a7..ae847b293a60 100644 --- a/src/components/InlineCodeBlock/types.ts +++ b/src/components/InlineCodeBlock/types.ts @@ -1,4 +1,4 @@ -import {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; import type {TDefaultRenderer, TDefaultRendererProps, TText} from 'react-native-render-html'; type InlineCodeBlockProps = { diff --git a/src/components/InvertedFlatList/BaseInvertedFlatList.tsx b/src/components/InvertedFlatList/BaseInvertedFlatList.tsx index 08d990583572..f89daa8a7710 100644 --- a/src/components/InvertedFlatList/BaseInvertedFlatList.tsx +++ b/src/components/InvertedFlatList/BaseInvertedFlatList.tsx @@ -1,5 +1,6 @@ -import React, {ForwardedRef, forwardRef} from 'react'; -import {FlatListProps} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; +import type {FlatListProps} from 'react-native'; import FlatList from '@components/FlatList'; const AUTOSCROLL_TO_TOP_THRESHOLD = 128; diff --git a/src/components/InvertedFlatList/CellRendererComponent.tsx b/src/components/InvertedFlatList/CellRendererComponent.tsx index 252d47989064..f7455b0ef9c2 100644 --- a/src/components/InvertedFlatList/CellRendererComponent.tsx +++ b/src/components/InvertedFlatList/CellRendererComponent.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, View, ViewProps} from 'react-native'; +import type {StyleProp, ViewProps} from 'react-native'; +import { View} from 'react-native'; type CellRendererComponentProps = ViewProps & { index: number; diff --git a/src/components/InvertedFlatList/index.native.tsx b/src/components/InvertedFlatList/index.native.tsx index 906ef6d6ae94..dd47e78fe756 100644 --- a/src/components/InvertedFlatList/index.native.tsx +++ b/src/components/InvertedFlatList/index.native.tsx @@ -1,5 +1,6 @@ -import React, {ForwardedRef, forwardRef} from 'react'; -import {FlatList, FlatListProps} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; +import type {FlatList, FlatListProps} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import BaseInvertedFlatList from './BaseInvertedFlatList'; import CellRendererComponent from './CellRendererComponent'; diff --git a/src/components/InvertedFlatList/index.tsx b/src/components/InvertedFlatList/index.tsx index 6871b010a385..fc141d2af906 100644 --- a/src/components/InvertedFlatList/index.tsx +++ b/src/components/InvertedFlatList/index.tsx @@ -1,5 +1,7 @@ -import React, {ForwardedRef, forwardRef, useEffect, useRef} from 'react'; -import {DeviceEventEmitter, FlatList, FlatListProps, NativeScrollEvent, NativeSyntheticEvent} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef, useEffect, useRef} from 'react'; +import type { FlatList, FlatListProps, NativeScrollEvent, NativeSyntheticEvent} from 'react-native'; +import {DeviceEventEmitter} from 'react-native'; import CONST from '@src/CONST'; import BaseInvertedFlatList from './BaseInvertedFlatList'; diff --git a/src/components/KeyboardAvoidingView/index.ios.tsx b/src/components/KeyboardAvoidingView/index.ios.tsx index fde4df6fc05b..a7cd767377ef 100644 --- a/src/components/KeyboardAvoidingView/index.ios.tsx +++ b/src/components/KeyboardAvoidingView/index.ios.tsx @@ -3,7 +3,7 @@ */ import React from 'react'; import {KeyboardAvoidingView as KeyboardAvoidingViewComponent} from 'react-native'; -import KeyboardAvoidingViewProps from './types'; +import type KeyboardAvoidingViewProps from './types'; function KeyboardAvoidingView(props: KeyboardAvoidingViewProps) { // eslint-disable-next-line react/jsx-props-no-spreading diff --git a/src/components/KeyboardAvoidingView/index.tsx b/src/components/KeyboardAvoidingView/index.tsx index cf3a5c5ebef7..09ec21e5b219 100644 --- a/src/components/KeyboardAvoidingView/index.tsx +++ b/src/components/KeyboardAvoidingView/index.tsx @@ -3,7 +3,7 @@ */ import React from 'react'; import {View} from 'react-native'; -import KeyboardAvoidingViewProps from './types'; +import type KeyboardAvoidingViewProps from './types'; function KeyboardAvoidingView(props: KeyboardAvoidingViewProps) { const {behavior, contentContainerStyle, enabled, keyboardVerticalOffset, ...rest} = props; diff --git a/src/components/LinearGradient/index.native.ts b/src/components/LinearGradient/index.native.ts index 46bed24ebc10..29af26b96b64 100644 --- a/src/components/LinearGradient/index.native.ts +++ b/src/components/LinearGradient/index.native.ts @@ -1,5 +1,5 @@ import LinearGradientNative from 'react-native-linear-gradient'; -import LinearGradient from './types'; +import type LinearGradient from './types'; const LinearGradientImplementation: LinearGradient = LinearGradientNative; diff --git a/src/components/LinearGradient/index.ts b/src/components/LinearGradient/index.ts index 7246ccf2fb69..84d0fc2ce5c8 100644 --- a/src/components/LinearGradient/index.ts +++ b/src/components/LinearGradient/index.ts @@ -1,5 +1,5 @@ import LinearGradientWeb from 'react-native-web-linear-gradient'; -import LinearGradient from './types'; +import type LinearGradient from './types'; const LinearGradientImplementation: LinearGradient = LinearGradientWeb; diff --git a/src/components/LinearGradient/types.ts b/src/components/LinearGradient/types.ts index cf6661eaecaa..9e238ef71f12 100644 --- a/src/components/LinearGradient/types.ts +++ b/src/components/LinearGradient/types.ts @@ -1,4 +1,4 @@ -import LinearGradientNative from 'react-native-linear-gradient'; +import type LinearGradientNative from 'react-native-linear-gradient'; type LinearGradient = typeof LinearGradientNative; diff --git a/src/components/LocaleContextProvider.tsx b/src/components/LocaleContextProvider.tsx index 3c649a8cb546..4cf7551ab249 100644 --- a/src/components/LocaleContextProvider.tsx +++ b/src/components/LocaleContextProvider.tsx @@ -1,6 +1,7 @@ import React, {createContext, useMemo} from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import compose from '@libs/compose'; import DateUtils from '@libs/DateUtils'; import * as LocaleDigitUtils from '@libs/LocaleDigitUtils'; @@ -8,9 +9,10 @@ import * as LocalePhoneNumber from '@libs/LocalePhoneNumber'; import * as Localize from '@libs/Localize'; import * as NumberFormatUtils from '@libs/NumberFormatUtils'; import CONST from '@src/CONST'; -import {TranslationPaths} from '@src/languages/types'; +import type {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; -import withCurrentUserPersonalDetails, {WithCurrentUserPersonalDetailsProps} from './withCurrentUserPersonalDetails'; +import type {WithCurrentUserPersonalDetailsProps} from './withCurrentUserPersonalDetails'; +import withCurrentUserPersonalDetails from './withCurrentUserPersonalDetails'; type Locale = ValueOf; diff --git a/src/components/LocalePicker.tsx b/src/components/LocalePicker.tsx index 46adb1a4895e..20a86d41aa55 100644 --- a/src/components/LocalePicker.tsx +++ b/src/components/LocalePicker.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/LocationErrorMessage/BaseLocationErrorMessage.tsx b/src/components/LocationErrorMessage/BaseLocationErrorMessage.tsx index ceeb33d5e6bc..33a0bba7481c 100644 --- a/src/components/LocationErrorMessage/BaseLocationErrorMessage.tsx +++ b/src/components/LocationErrorMessage/BaseLocationErrorMessage.tsx @@ -12,7 +12,7 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import colors from '@styles/theme/colors'; import CONST from '@src/CONST'; -import LocationErrorMessageProps from './types'; +import type LocationErrorMessageProps from './types'; type BaseLocationErrorMessageProps = LocationErrorMessageProps & { /** A callback that runs when 'allow location permission' link is pressed */ diff --git a/src/components/LocationErrorMessage/index.native.tsx b/src/components/LocationErrorMessage/index.native.tsx index 3f3813084a47..7936fff73c06 100644 --- a/src/components/LocationErrorMessage/index.native.tsx +++ b/src/components/LocationErrorMessage/index.native.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {Linking} from 'react-native'; import BaseLocationErrorMessage from './BaseLocationErrorMessage'; -import LocationErrorMessageProps from './types'; +import type LocationErrorMessageProps from './types'; /** Opens app level settings from the native system settings */ const openAppSettings = () => { diff --git a/src/components/LocationErrorMessage/index.tsx b/src/components/LocationErrorMessage/index.tsx index bd9523ca5c1c..193d38069d65 100644 --- a/src/components/LocationErrorMessage/index.tsx +++ b/src/components/LocationErrorMessage/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {Linking} from 'react-native'; import CONST from '@src/CONST'; import BaseLocationErrorMessage from './BaseLocationErrorMessage'; -import LocationErrorMessageProps from './types'; +import type LocationErrorMessageProps from './types'; /** Opens expensify help site in a new browser tab */ const navigateToExpensifyHelpSite = () => { diff --git a/src/components/Lottie/index.tsx b/src/components/Lottie/index.tsx index 2bf7df056c4d..8f29cd953460 100644 --- a/src/components/Lottie/index.tsx +++ b/src/components/Lottie/index.tsx @@ -1,7 +1,9 @@ -import LottieView, {LottieViewProps} from 'lottie-react-native'; -import React, {ForwardedRef, forwardRef} from 'react'; +import type {LottieViewProps} from 'lottie-react-native'; +import LottieView from 'lottie-react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; import {View} from 'react-native'; -import DotLottieAnimation from '@components/LottieAnimations/types'; +import type DotLottieAnimation from '@components/LottieAnimations/types'; import useNetwork from '@hooks/useNetwork'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/LottieAnimations/index.tsx b/src/components/LottieAnimations/index.tsx index 078cdc0c6987..0d2cac253135 100644 --- a/src/components/LottieAnimations/index.tsx +++ b/src/components/LottieAnimations/index.tsx @@ -1,4 +1,4 @@ -import DotLottieAnimation from './types'; +import type DotLottieAnimation from './types'; const DotLottieAnimations: Record = { ExpensifyLounge: { diff --git a/src/components/LottieAnimations/types.ts b/src/components/LottieAnimations/types.ts index fcd793c6dfed..6000b9f853f0 100644 --- a/src/components/LottieAnimations/types.ts +++ b/src/components/LottieAnimations/types.ts @@ -1,4 +1,4 @@ -import {LottieViewProps} from 'lottie-react-native'; +import type {LottieViewProps} from 'lottie-react-native'; type DotLottieAnimation = { file: LottieViewProps['source']; diff --git a/src/components/MapView/Direction.tsx b/src/components/MapView/Direction.tsx index b3162149a48d..729d3c71e91f 100644 --- a/src/components/MapView/Direction.tsx +++ b/src/components/MapView/Direction.tsx @@ -1,6 +1,6 @@ import Mapbox from '@rnmapbox/maps'; import useThemeStyles from '@hooks/useThemeStyles'; -import {DirectionProps} from './MapViewTypes'; +import type {DirectionProps} from './MapViewTypes'; function Direction({coordinates}: DirectionProps) { const styles = useThemeStyles(); diff --git a/src/components/MapView/Direction.website.tsx b/src/components/MapView/Direction.website.tsx index f85bda125473..02fee83042a2 100644 --- a/src/components/MapView/Direction.website.tsx +++ b/src/components/MapView/Direction.website.tsx @@ -6,7 +6,7 @@ import React from 'react'; import {Layer, Source} from 'react-map-gl'; import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; -import {DirectionProps} from './MapViewTypes'; +import type {DirectionProps} from './MapViewTypes'; function Direction({coordinates}: DirectionProps) { const styles = useThemeStyles(); diff --git a/src/components/MapView/MapView.tsx b/src/components/MapView/MapView.tsx index f7a15ba10d2c..35e0ccca2124 100644 --- a/src/components/MapView/MapView.tsx +++ b/src/components/MapView/MapView.tsx @@ -1,5 +1,6 @@ import {useFocusEffect, useNavigation} from '@react-navigation/native'; -import Mapbox, {MapState, MarkerView, setAccessToken} from '@rnmapbox/maps'; +import type {MapState} from '@rnmapbox/maps'; +import Mapbox, { MarkerView, setAccessToken} from '@rnmapbox/maps'; import {forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; @@ -12,10 +13,10 @@ import useLocalize from '@src/hooks/useLocalize'; import useNetwork from '@src/hooks/useNetwork'; import ONYXKEYS from '@src/ONYXKEYS'; import Direction from './Direction'; -import {MapViewHandle} from './MapViewTypes'; +import type {MapViewHandle} from './MapViewTypes'; import PendingMapView from './PendingMapView'; import responder from './responder'; -import {ComponentProps, MapViewOnyxProps} from './types'; +import type {ComponentProps, MapViewOnyxProps} from './types'; import utils from './utils'; const MapView = forwardRef( diff --git a/src/components/MapView/MapView.website.tsx b/src/components/MapView/MapView.website.tsx index 82909001fefd..13bea67ab012 100644 --- a/src/components/MapView/MapView.website.tsx +++ b/src/components/MapView/MapView.website.tsx @@ -6,7 +6,8 @@ import {useFocusEffect} from '@react-navigation/native'; import mapboxgl from 'mapbox-gl'; import 'mapbox-gl/dist/mapbox-gl.css'; import React, {forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react'; -import Map, {MapRef, Marker} from 'react-map-gl'; +import type {MapRef} from 'react-map-gl'; +import Map, { Marker} from 'react-map-gl'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import useStyleUtils from '@hooks/useStyleUtils'; @@ -20,10 +21,10 @@ import getCurrentPosition from '@src/libs/getCurrentPosition'; import ONYXKEYS from '@src/ONYXKEYS'; import Direction from './Direction'; import './mapbox.css'; -import {MapViewHandle} from './MapViewTypes'; +import type {MapViewHandle} from './MapViewTypes'; import PendingMapView from './PendingMapView'; import responder from './responder'; -import {ComponentProps, MapViewOnyxProps} from './types'; +import type {ComponentProps, MapViewOnyxProps} from './types'; import utils from './utils'; const MapView = forwardRef( diff --git a/src/components/MapView/MapViewTypes.ts b/src/components/MapView/MapViewTypes.ts index 6cc52ac91d18..4b9ab6af233b 100644 --- a/src/components/MapView/MapViewTypes.ts +++ b/src/components/MapView/MapViewTypes.ts @@ -1,4 +1,4 @@ -import {ComponentType} from 'react'; +import type {ComponentType} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; type MapViewProps = { diff --git a/src/components/MapView/PendingMapView.tsx b/src/components/MapView/PendingMapView.tsx index 0af816785e9a..32bf42a14b10 100644 --- a/src/components/MapView/PendingMapView.tsx +++ b/src/components/MapView/PendingMapView.tsx @@ -6,7 +6,7 @@ import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; -import {PendingMapViewProps} from './MapViewTypes'; +import type {PendingMapViewProps} from './MapViewTypes'; function PendingMapView({title = '', subtitle = '', style}: PendingMapViewProps) { const hasTextContent = !_.isEmpty(title) || !_.isEmpty(subtitle); diff --git a/src/components/MapView/types.ts b/src/components/MapView/types.ts index 2c8b9240c445..a0494a9ac499 100644 --- a/src/components/MapView/types.ts +++ b/src/components/MapView/types.ts @@ -1,6 +1,6 @@ -import {OnyxEntry} from 'react-native-onyx'; -import * as OnyxTypes from '@src/types/onyx'; -import {MapViewProps} from './MapViewTypes'; +import type {OnyxEntry} from 'react-native-onyx'; +import type * as OnyxTypes from '@src/types/onyx'; +import type {MapViewProps} from './MapViewTypes'; type MapViewOnyxProps = { userLocation: OnyxEntry; diff --git a/src/components/MentionSuggestions.tsx b/src/components/MentionSuggestions.tsx index 3e235a2fc88a..459131ecc434 100644 --- a/src/components/MentionSuggestions.tsx +++ b/src/components/MentionSuggestions.tsx @@ -5,7 +5,7 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import getStyledTextArray from '@libs/GetStyledTextArray'; import CONST from '@src/CONST'; -import {Icon} from '@src/types/onyx/OnyxCommon'; +import type {Icon} from '@src/types/onyx/OnyxCommon'; import AutoCompleteSuggestions from './AutoCompleteSuggestions'; import Avatar from './Avatar'; import Text from './Text'; diff --git a/src/components/MenuItem.tsx b/src/components/MenuItem.tsx index 9faabc403c75..ff9dba0d96c1 100644 --- a/src/components/MenuItem.tsx +++ b/src/components/MenuItem.tsx @@ -1,9 +1,11 @@ import ExpensiMark from 'expensify-common/lib/ExpensiMark'; -import {ImageContentFit} from 'expo-image'; -import React, {ForwardedRef, forwardRef, ReactNode, useEffect, useMemo, useRef, useState} from 'react'; -import {GestureResponderEvent, StyleProp, TextStyle, View, ViewStyle} from 'react-native'; -import {AnimatedStyle} from 'react-native-reanimated'; -import {ValueOf} from 'type-fest'; +import type {ImageContentFit} from 'expo-image'; +import type {ForwardedRef, ReactNode} from 'react'; +import React, { forwardRef, useEffect, useMemo, useRef, useState} from 'react'; +import type {GestureResponderEvent, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; +import type {AnimatedStyle} from 'react-native-reanimated'; +import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -12,16 +14,16 @@ import ControlSelection from '@libs/ControlSelection'; import convertToLTR from '@libs/convertToLTR'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; import getButtonState from '@libs/getButtonState'; -import {AvatarSource} from '@libs/UserUtils'; +import type {AvatarSource} from '@libs/UserUtils'; import variables from '@styles/variables'; import * as Session from '@userActions/Session'; import CONST from '@src/CONST'; -import {Icon as IconType} from '@src/types/onyx/OnyxCommon'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {Icon as IconType} from '@src/types/onyx/OnyxCommon'; +import type IconAsset from '@src/types/utils/IconAsset'; import Avatar from './Avatar'; import Badge from './Badge'; import DisplayNames from './DisplayNames'; -import {DisplayNameWithTooltip} from './DisplayNames/types'; +import type {DisplayNameWithTooltip} from './DisplayNames/types'; import FormHelpMessage from './FormHelpMessage'; import Hoverable from './Hoverable'; import Icon from './Icon'; diff --git a/src/components/MenuItemWithTopDescription.tsx b/src/components/MenuItemWithTopDescription.tsx index 48fa95ecf637..8e4db73848b5 100644 --- a/src/components/MenuItemWithTopDescription.tsx +++ b/src/components/MenuItemWithTopDescription.tsx @@ -1,5 +1,6 @@ -import React, {ForwardedRef, forwardRef} from 'react'; -import {View} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; +import type {View} from 'react-native'; import MenuItem from './MenuItem'; import type {MenuItemProps} from './MenuItem'; diff --git a/src/components/MessagesRow.tsx b/src/components/MessagesRow.tsx index f49a0927de06..45d35f36ed92 100644 --- a/src/components/MessagesRow.tsx +++ b/src/components/MessagesRow.tsx @@ -1,9 +1,10 @@ import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; -import * as Localize from '@libs/Localize'; +import type * as Localize from '@libs/Localize'; import CONST from '@src/CONST'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import DotIndicatorMessage from './DotIndicatorMessage'; diff --git a/src/components/Modal/BaseModal.tsx b/src/components/Modal/BaseModal.tsx index e03c32f6bfcc..6e5b4eddae9e 100644 --- a/src/components/Modal/BaseModal.tsx +++ b/src/components/Modal/BaseModal.tsx @@ -13,7 +13,7 @@ import useNativeDriver from '@libs/useNativeDriver'; import variables from '@styles/variables'; import * as Modal from '@userActions/Modal'; import CONST from '@src/CONST'; -import BaseModalProps from './types'; +import type BaseModalProps from './types'; function BaseModal( { diff --git a/src/components/Modal/index.android.tsx b/src/components/Modal/index.android.tsx index 2343cb4c70a9..4d7ae128a114 100644 --- a/src/components/Modal/index.android.tsx +++ b/src/components/Modal/index.android.tsx @@ -3,7 +3,7 @@ import {AppState} from 'react-native'; import withWindowDimensions from '@components/withWindowDimensions'; import ComposerFocusManager from '@libs/ComposerFocusManager'; import BaseModal from './BaseModal'; -import BaseModalProps from './types'; +import type BaseModalProps from './types'; AppState.addEventListener('focus', () => { ComposerFocusManager.setReadyToFocus(); diff --git a/src/components/Modal/index.ios.tsx b/src/components/Modal/index.ios.tsx index f780775ec216..cbe58a071d7d 100644 --- a/src/components/Modal/index.ios.tsx +++ b/src/components/Modal/index.ios.tsx @@ -1,7 +1,7 @@ import React from 'react'; import withWindowDimensions from '@components/withWindowDimensions'; import BaseModal from './BaseModal'; -import BaseModalProps from './types'; +import type BaseModalProps from './types'; function Modal({children, ...rest}: BaseModalProps) { return ( diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index 4269420dcd7f..56f3c76a8879 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -5,7 +5,7 @@ import useTheme from '@hooks/useTheme'; import StatusBar from '@libs/StatusBar'; import CONST from '@src/CONST'; import BaseModal from './BaseModal'; -import BaseModalProps from './types'; +import type BaseModalProps from './types'; function Modal({fullscreen = true, onModalHide = () => {}, type, onModalShow = () => {}, children, ...rest}: BaseModalProps) { const theme = useTheme(); diff --git a/src/components/Modal/types.ts b/src/components/Modal/types.ts index 461a5935eda9..0fed37ffea8b 100644 --- a/src/components/Modal/types.ts +++ b/src/components/Modal/types.ts @@ -1,8 +1,8 @@ -import {ViewStyle} from 'react-native'; -import {ModalProps} from 'react-native-modal'; -import {ValueOf} from 'type-fest'; -import {WindowDimensionsProps} from '@components/withWindowDimensions/types'; -import CONST from '@src/CONST'; +import type {ViewStyle} from 'react-native'; +import type {ModalProps} from 'react-native-modal'; +import type {ValueOf} from 'type-fest'; +import type {WindowDimensionsProps} from '@components/withWindowDimensions/types'; +import type CONST from '@src/CONST'; type PopoverAnchorPosition = { top?: number; diff --git a/src/components/MoneyReportHeaderStatusBar.tsx b/src/components/MoneyReportHeaderStatusBar.tsx index 9d96d93423c5..4b30276a204f 100644 --- a/src/components/MoneyReportHeaderStatusBar.tsx +++ b/src/components/MoneyReportHeaderStatusBar.tsx @@ -4,7 +4,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as NextStepUtils from '@libs/NextStepUtils'; import CONST from '@src/CONST'; -import ReportNextStep from '@src/types/onyx/ReportNextStep'; +import type ReportNextStep from '@src/types/onyx/ReportNextStep'; import RenderHTML from './RenderHTML'; type MoneyReportHeaderStatusBarProps = { diff --git a/src/components/MultipleAvatars.tsx b/src/components/MultipleAvatars.tsx index 23c795f281f6..38ced7551a74 100644 --- a/src/components/MultipleAvatars.tsx +++ b/src/components/MultipleAvatars.tsx @@ -1,10 +1,11 @@ import React, {memo, useMemo} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; -import {ValueOf} from 'type-fest'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; +import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; -import {AvatarSource} from '@libs/UserUtils'; +import type {AvatarSource} from '@libs/UserUtils'; import variables from '@styles/variables'; import CONST from '@src/CONST'; import type {Icon} from '@src/types/onyx/OnyxCommon'; diff --git a/src/components/OfflineIndicator.tsx b/src/components/OfflineIndicator.tsx index 035058ab9be9..8bc7ba69fd36 100644 --- a/src/components/OfflineIndicator.tsx +++ b/src/components/OfflineIndicator.tsx @@ -1,5 +1,6 @@ import React, {useMemo} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/OfflineWithFeedback.tsx b/src/components/OfflineWithFeedback.tsx index 29fd0c2700dc..1d715da78b69 100644 --- a/src/components/OfflineWithFeedback.tsx +++ b/src/components/OfflineWithFeedback.tsx @@ -1,12 +1,13 @@ import React, {useCallback} from 'react'; -import {ImageStyle, StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {ImageStyle, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useNetwork from '@hooks/useNetwork'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import shouldRenderOffscreen from '@libs/shouldRenderOffscreen'; import CONST from '@src/CONST'; -import * as OnyxCommon from '@src/types/onyx/OnyxCommon'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type * as OnyxCommon from '@src/types/onyx/OnyxCommon'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; import {isNotEmptyObject} from '@src/types/utils/EmptyObject'; import MessagesRow from './MessagesRow'; diff --git a/src/components/OpacityView.tsx b/src/components/OpacityView.tsx index 6f82658bcac1..1de09aad6b22 100644 --- a/src/components/OpacityView.tsx +++ b/src/components/OpacityView.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import {StyleProp, ViewStyle} from 'react-native'; -import Animated, {AnimatedStyle, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; +import type {StyleProp, ViewStyle} from 'react-native'; +import type {AnimatedStyle} from 'react-native-reanimated'; +import Animated, { useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import shouldRenderOffscreen from '@libs/shouldRenderOffscreen'; import variables from '@styles/variables'; diff --git a/src/components/OptionRow.tsx b/src/components/OptionRow.tsx index 5a2f6902c4c0..994d297bc97c 100644 --- a/src/components/OptionRow.tsx +++ b/src/components/OptionRow.tsx @@ -1,6 +1,7 @@ import lodashIsEqual from 'lodash/isEqual'; import React, {useEffect, useRef, useState} from 'react'; -import {InteractionManager, StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native'; +import type { StyleProp, TextStyle, ViewStyle} from 'react-native'; +import {InteractionManager, StyleSheet, View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/ParentNavigationSubtitle.tsx b/src/components/ParentNavigationSubtitle.tsx index b3f1653fda1a..2816715dae2c 100644 --- a/src/components/ParentNavigationSubtitle.tsx +++ b/src/components/ParentNavigationSubtitle.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import {StyleProp, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import CONST from '@src/CONST'; -import {ParentNavigationSummaryParams} from '@src/languages/types'; +import type {ParentNavigationSummaryParams} from '@src/languages/types'; import ROUTES from '@src/ROUTES'; import PressableWithoutFeedback from './Pressable/PressableWithoutFeedback'; import Text from './Text'; diff --git a/src/components/Picker/BasePicker.tsx b/src/components/Picker/BasePicker.tsx index edaab2693e7b..2a45d99c4996 100644 --- a/src/components/Picker/BasePicker.tsx +++ b/src/components/Picker/BasePicker.tsx @@ -1,6 +1,8 @@ import lodashDefer from 'lodash/defer'; -import React, {ForwardedRef, forwardRef, ReactElement, ReactNode, RefObject, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; -import {ScrollView, View} from 'react-native'; +import type {ForwardedRef, ReactElement, ReactNode, RefObject} from 'react'; +import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; +import type {ScrollView} from 'react-native'; +import { View} from 'react-native'; import RNPickerSelect from 'react-native-picker-select'; import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; diff --git a/src/components/Picker/index.native.tsx b/src/components/Picker/index.native.tsx index 7373f5a6f280..aaf7efed89d3 100644 --- a/src/components/Picker/index.native.tsx +++ b/src/components/Picker/index.native.tsx @@ -1,6 +1,7 @@ -import React, {ForwardedRef, forwardRef} from 'react'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; import BasePicker from './BasePicker'; -import {BasePickerHandle, BasePickerProps} from './types'; +import type {BasePickerHandle, BasePickerProps} from './types'; function Picker(props: BasePickerProps, ref: ForwardedRef) { return ( diff --git a/src/components/Picker/index.tsx b/src/components/Picker/index.tsx index 18184b130bba..6dab7d01418d 100644 --- a/src/components/Picker/index.tsx +++ b/src/components/Picker/index.tsx @@ -1,4 +1,5 @@ -import React, {ForwardedRef, forwardRef} from 'react'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; import BasePicker from './BasePicker'; import type {AdditionalPickerEvents, BasePickerHandle, BasePickerProps, OnChange, OnMouseDown} from './types'; diff --git a/src/components/Picker/types.ts b/src/components/Picker/types.ts index 58eed0371893..edf39a59c9d8 100644 --- a/src/components/Picker/types.ts +++ b/src/components/Picker/types.ts @@ -1,5 +1,5 @@ -import {ChangeEvent, Component, ReactElement} from 'react'; -import {MeasureLayoutOnSuccessCallback, NativeMethods, StyleProp, ViewStyle} from 'react-native'; +import type {ChangeEvent, Component, ReactElement} from 'react'; +import type {MeasureLayoutOnSuccessCallback, NativeMethods, StyleProp, ViewStyle} from 'react-native'; type MeasureLayoutOnFailCallback = () => void; diff --git a/src/components/PlaidLink/index.native.tsx b/src/components/PlaidLink/index.native.tsx index c46a9df2076e..6b0f7845bb99 100644 --- a/src/components/PlaidLink/index.native.tsx +++ b/src/components/PlaidLink/index.native.tsx @@ -1,8 +1,9 @@ import {useEffect} from 'react'; -import {dismissLink, LinkEvent, openLink, usePlaidEmitter} from 'react-native-plaid-link-sdk'; +import type { LinkEvent} from 'react-native-plaid-link-sdk'; +import {dismissLink, openLink, usePlaidEmitter} from 'react-native-plaid-link-sdk'; import Log from '@libs/Log'; import CONST from '@src/CONST'; -import PlaidLinkProps from './types'; +import type PlaidLinkProps from './types'; function PlaidLink({token, onSuccess = () => {}, onExit = () => {}, onEvent}: PlaidLinkProps) { usePlaidEmitter((event: LinkEvent) => { diff --git a/src/components/PlaidLink/index.tsx b/src/components/PlaidLink/index.tsx index 08655458d12e..4e26d0c1ccaa 100644 --- a/src/components/PlaidLink/index.tsx +++ b/src/components/PlaidLink/index.tsx @@ -1,10 +1,11 @@ import React, {useCallback, useEffect, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; -import {PlaidLinkOnSuccessMetadata, usePlaidLink} from 'react-plaid-link'; +import type {PlaidLinkOnSuccessMetadata} from 'react-plaid-link'; +import { usePlaidLink} from 'react-plaid-link'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Log from '@libs/Log'; -import PlaidLinkProps from './types'; +import type PlaidLinkProps from './types'; function PlaidLink({token, onSuccess = () => {}, onError = () => {}, onExit = () => {}, onEvent, receivedRedirectURI}: PlaidLinkProps) { const [isPlaidLoaded, setIsPlaidLoaded] = useState(false); diff --git a/src/components/PlaidLink/types.ts b/src/components/PlaidLink/types.ts index 1034eb935f74..48526520c736 100644 --- a/src/components/PlaidLink/types.ts +++ b/src/components/PlaidLink/types.ts @@ -1,5 +1,5 @@ -import {LinkEventMetadata, LinkSuccessMetadata} from 'react-native-plaid-link-sdk'; -import {PlaidLinkOnEventMetadata, PlaidLinkOnSuccessMetadata} from 'react-plaid-link'; +import type {LinkEventMetadata, LinkSuccessMetadata} from 'react-native-plaid-link-sdk'; +import type {PlaidLinkOnEventMetadata, PlaidLinkOnSuccessMetadata} from 'react-plaid-link'; type PlaidLinkProps = { // Plaid Link SDK public token used to initialize the Plaid SDK diff --git a/src/components/Popover/index.native.tsx b/src/components/Popover/index.native.tsx index 3fff04d00d2f..08ed15fd0d30 100644 --- a/src/components/Popover/index.native.tsx +++ b/src/components/Popover/index.native.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Modal from '@components/Modal'; import CONST from '@src/CONST'; -import {PopoverProps} from './types'; +import type {PopoverProps} from './types'; /* * This is a convenience wrapper around the Modal component for a responsive Popover. diff --git a/src/components/Popover/index.tsx b/src/components/Popover/index.tsx index bf79415d4794..762e79fab63c 100644 --- a/src/components/Popover/index.tsx +++ b/src/components/Popover/index.tsx @@ -5,7 +5,7 @@ import {PopoverContext} from '@components/PopoverProvider'; import PopoverWithoutOverlay from '@components/PopoverWithoutOverlay'; import withWindowDimensions from '@components/withWindowDimensions'; import CONST from '@src/CONST'; -import {PopoverWithWindowDimensionsProps} from './types'; +import type {PopoverWithWindowDimensionsProps} from './types'; /* * This is a convenience wrapper around the Modal component for a responsive Popover. diff --git a/src/components/Popover/types.ts b/src/components/Popover/types.ts index 7890ce5555f0..3d1f95822e6a 100644 --- a/src/components/Popover/types.ts +++ b/src/components/Popover/types.ts @@ -1,7 +1,8 @@ import type {ValueOf} from 'type-fest'; -import BaseModalProps, {PopoverAnchorPosition} from '@components/Modal/types'; -import {WindowDimensionsProps} from '@components/withWindowDimensions/types'; -import CONST from '@src/CONST'; +import type {PopoverAnchorPosition} from '@components/Modal/types'; +import type BaseModalProps from '@components/Modal/types'; +import type {WindowDimensionsProps} from '@components/withWindowDimensions/types'; +import type CONST from '@src/CONST'; type AnchorAlignment = { /** The horizontal anchor alignment of the popover */ diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index 2c85b80534ca..57865a4bd037 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -1,5 +1,6 @@ import type {ImageContentFit} from 'expo-image'; -import React, {RefObject, useRef} from 'react'; +import type {RefObject} from 'react'; +import React, { useRef} from 'react'; import {View} from 'react-native'; import type {ModalProps} from 'react-native-modal'; import type {SvgProps} from 'react-native-svg'; diff --git a/src/components/PopoverProvider/index.native.tsx b/src/components/PopoverProvider/index.native.tsx index a87036c61808..b13909945bef 100644 --- a/src/components/PopoverProvider/index.native.tsx +++ b/src/components/PopoverProvider/index.native.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {PopoverContextProps, PopoverContextValue} from './types'; +import type {PopoverContextProps, PopoverContextValue} from './types'; const PopoverContext = React.createContext({ onOpen: () => {}, diff --git a/src/components/PopoverProvider/index.tsx b/src/components/PopoverProvider/index.tsx index 06345ebdbc1c..b50b04289813 100644 --- a/src/components/PopoverProvider/index.tsx +++ b/src/components/PopoverProvider/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {AnchorRef, PopoverContextProps, PopoverContextValue} from './types'; +import type {AnchorRef, PopoverContextProps, PopoverContextValue} from './types'; const PopoverContext = React.createContext({ onOpen: () => {}, diff --git a/src/components/PopoverWithMeasuredContent.tsx b/src/components/PopoverWithMeasuredContent.tsx index 206a33181605..dd83b3f196d3 100644 --- a/src/components/PopoverWithMeasuredContent.tsx +++ b/src/components/PopoverWithMeasuredContent.tsx @@ -1,13 +1,14 @@ import isEqual from 'lodash/isEqual'; import React, {useMemo, useState} from 'react'; -import {LayoutChangeEvent, View} from 'react-native'; +import type {LayoutChangeEvent} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import PopoverWithMeasuredContentUtils from '@libs/PopoverWithMeasuredContentUtils'; import CONST from '@src/CONST'; import type {AnchorPosition} from '@src/styles'; import Popover from './Popover'; -import {PopoverProps} from './Popover/types'; +import type {PopoverProps} from './Popover/types'; import type {WindowDimensionsProps} from './withWindowDimensions/types'; type PopoverWithMeasuredContentProps = Omit & { diff --git a/src/components/PopoverWithoutOverlay/index.tsx b/src/components/PopoverWithoutOverlay/index.tsx index f83949bcbe9d..0479161c4ac4 100644 --- a/src/components/PopoverWithoutOverlay/index.tsx +++ b/src/components/PopoverWithoutOverlay/index.tsx @@ -1,4 +1,5 @@ -import React, {ForwardedRef, forwardRef, useContext, useEffect, useMemo} from 'react'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef, useContext, useEffect, useMemo} from 'react'; import {View} from 'react-native'; import ColorSchemeWrapper from '@components/ColorSchemeWrapper'; import {PopoverContext} from '@components/PopoverProvider'; @@ -7,7 +8,7 @@ import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import * as Modal from '@userActions/Modal'; -import PopoverWithoutOverlayProps from './types'; +import type PopoverWithoutOverlayProps from './types'; function PopoverWithoutOverlay( { diff --git a/src/components/PopoverWithoutOverlay/types.ts b/src/components/PopoverWithoutOverlay/types.ts index 0d70c4a5facb..ff4f73fd4114 100644 --- a/src/components/PopoverWithoutOverlay/types.ts +++ b/src/components/PopoverWithoutOverlay/types.ts @@ -1,6 +1,6 @@ -import {View} from 'react-native'; -import BaseModalProps from '@components/Modal/types'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {View} from 'react-native'; +import type BaseModalProps from '@components/Modal/types'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type PopoverWithoutOverlayProps = ChildrenProps & Omit & { diff --git a/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx b/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx index 0a9f544bcee1..e9de3aaee228 100644 --- a/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx +++ b/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx @@ -1,6 +1,8 @@ -import React, {ForwardedRef, forwardRef, useCallback, useEffect, useMemo} from 'react'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef, useCallback, useEffect, useMemo} from 'react'; // eslint-disable-next-line no-restricted-imports -import {GestureResponderEvent, Pressable, View} from 'react-native'; +import type {GestureResponderEvent, View} from 'react-native'; +import { Pressable} from 'react-native'; import useSingleExecution from '@hooks/useSingleExecution'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -8,7 +10,8 @@ import Accessibility from '@libs/Accessibility'; import HapticFeedback from '@libs/HapticFeedback'; import KeyboardShortcut from '@libs/KeyboardShortcut'; import CONST from '@src/CONST'; -import PressableProps, {PressableRef} from './types'; +import type {PressableRef} from './types'; +import type PressableProps from './types'; function GenericPressable( { diff --git a/src/components/Pressable/GenericPressable/index.native.tsx b/src/components/Pressable/GenericPressable/index.native.tsx index 968ee6063a95..c17163677cbe 100644 --- a/src/components/Pressable/GenericPressable/index.native.tsx +++ b/src/components/Pressable/GenericPressable/index.native.tsx @@ -1,6 +1,7 @@ import React, {forwardRef} from 'react'; import GenericPressable from './BaseGenericPressable'; -import PressableProps, {PressableRef} from './types'; +import type {PressableRef} from './types'; +import type PressableProps from './types'; function NativeGenericPressable(props: PressableProps, ref: PressableRef) { return ( diff --git a/src/components/Pressable/GenericPressable/index.tsx b/src/components/Pressable/GenericPressable/index.tsx index 51099733e04f..3d6301379155 100644 --- a/src/components/Pressable/GenericPressable/index.tsx +++ b/src/components/Pressable/GenericPressable/index.tsx @@ -1,7 +1,8 @@ import React, {forwardRef} from 'react'; -import {Role} from 'react-native'; +import type {Role} from 'react-native'; import GenericPressable from './BaseGenericPressable'; -import PressableProps, {PressableRef} from './types'; +import type {PressableRef} from './types'; +import type PressableProps from './types'; function WebGenericPressable({focusable = true, ...props}: PressableProps, ref: PressableRef) { const accessible = props.accessible ?? props.accessible === undefined ? true : props.accessible; diff --git a/src/components/Pressable/GenericPressable/types.ts b/src/components/Pressable/GenericPressable/types.ts index cdb9a8624114..dc04b6fcf329 100644 --- a/src/components/Pressable/GenericPressable/types.ts +++ b/src/components/Pressable/GenericPressable/types.ts @@ -1,8 +1,8 @@ -import {ElementRef, ForwardedRef, RefObject} from 'react'; -import {GestureResponderEvent, HostComponent, PressableStateCallbackType, PressableProps as RNPressableProps, StyleProp, View, ViewStyle} from 'react-native'; -import {ValueOf} from 'type-fest'; -import {Shortcut} from '@libs/KeyboardShortcut'; -import CONST from '@src/CONST'; +import type {ElementRef, ForwardedRef, RefObject} from 'react'; +import type {GestureResponderEvent, HostComponent, PressableStateCallbackType, PressableProps as RNPressableProps, StyleProp, View, ViewStyle} from 'react-native'; +import type {ValueOf} from 'type-fest'; +import type {Shortcut} from '@libs/KeyboardShortcut'; +import type CONST from '@src/CONST'; type StylePropWithFunction = StyleProp | ((state: PressableStateCallbackType) => StyleProp); diff --git a/src/components/Pressable/PressableWithDelayToggle.tsx b/src/components/Pressable/PressableWithDelayToggle.tsx index d265be929b0c..ab1fa95efeb5 100644 --- a/src/components/Pressable/PressableWithDelayToggle.tsx +++ b/src/components/Pressable/PressableWithDelayToggle.tsx @@ -1,6 +1,6 @@ /* eslint-disable react-native-a11y/has-valid-accessibility-descriptors */ import React, {forwardRef} from 'react'; -import {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import Text from '@components/Text'; @@ -10,8 +10,9 @@ import useThemeStyles from '@hooks/useThemeStyles'; import useThrottledButtonState from '@hooks/useThrottledButtonState'; import getButtonState from '@libs/getButtonState'; import variables from '@styles/variables'; -import IconAsset from '@src/types/utils/IconAsset'; -import PressableProps, {PressableRef} from './GenericPressable/types'; +import type IconAsset from '@src/types/utils/IconAsset'; +import type {PressableRef} from './GenericPressable/types'; +import type PressableProps from './GenericPressable/types'; import PressableWithoutFeedback from './PressableWithoutFeedback'; type PressableWithDelayToggleProps = PressableProps & { diff --git a/src/components/Pressable/PressableWithFeedback.tsx b/src/components/Pressable/PressableWithFeedback.tsx index a4c439c4441c..b717c4890a2d 100644 --- a/src/components/Pressable/PressableWithFeedback.tsx +++ b/src/components/Pressable/PressableWithFeedback.tsx @@ -1,10 +1,11 @@ import React, {forwardRef, useState} from 'react'; -import {StyleProp, ViewStyle} from 'react-native'; -import {AnimatedStyle} from 'react-native-reanimated'; +import type {StyleProp, ViewStyle} from 'react-native'; +import type {AnimatedStyle} from 'react-native-reanimated'; import OpacityView from '@components/OpacityView'; import variables from '@styles/variables'; import GenericPressable from './GenericPressable'; -import PressableProps, {PressableRef} from './GenericPressable/types'; +import type {PressableRef} from './GenericPressable/types'; +import type PressableProps from './GenericPressable/types'; type PressableWithFeedbackProps = PressableProps & { /** Style for the wrapper view */ diff --git a/src/components/Pressable/PressableWithoutFeedback.tsx b/src/components/Pressable/PressableWithoutFeedback.tsx index fd9d695cc2ed..f95050dd649e 100644 --- a/src/components/Pressable/PressableWithoutFeedback.tsx +++ b/src/components/Pressable/PressableWithoutFeedback.tsx @@ -1,6 +1,7 @@ import React from 'react'; import GenericPressable from './GenericPressable'; -import PressableProps, {PressableRef} from './GenericPressable/types'; +import type {PressableRef} from './GenericPressable/types'; +import type PressableProps from './GenericPressable/types'; function PressableWithoutFeedback( {pressStyle, hoverStyle, focusStyle, disabledStyle, screenReaderActiveStyle, shouldUseHapticsOnPress, shouldUseHapticsOnLongPress, ...rest}: PressableProps, diff --git a/src/components/Pressable/PressableWithoutFocus.tsx b/src/components/Pressable/PressableWithoutFocus.tsx index 32cb1708baf0..f887b0ea9b7d 100644 --- a/src/components/Pressable/PressableWithoutFocus.tsx +++ b/src/components/Pressable/PressableWithoutFocus.tsx @@ -1,7 +1,7 @@ import React, {useRef} from 'react'; -import {View} from 'react-native'; +import type {View} from 'react-native'; import GenericPressable from './GenericPressable'; -import PressableProps from './GenericPressable/types'; +import type PressableProps from './GenericPressable/types'; /** * This component prevents the tapped element from capturing focus. diff --git a/src/components/PressableWithSecondaryInteraction/index.native.tsx b/src/components/PressableWithSecondaryInteraction/index.native.tsx index 77dc9452f986..94b7e4580a1e 100644 --- a/src/components/PressableWithSecondaryInteraction/index.native.tsx +++ b/src/components/PressableWithSecondaryInteraction/index.native.tsx @@ -1,9 +1,10 @@ -import React, {forwardRef, ReactNode} from 'react'; -import {GestureResponderEvent, TextProps} from 'react-native'; -import {PressableRef} from '@components/Pressable/GenericPressable/types'; +import type { ReactNode} from 'react'; +import React, {forwardRef} from 'react'; +import type {GestureResponderEvent, TextProps} from 'react-native'; +import type {PressableRef} from '@components/Pressable/GenericPressable/types'; import PressableWithFeedback from '@components/Pressable/PressableWithFeedback'; import Text from '@components/Text'; -import PressableWithSecondaryInteractionProps from './types'; +import type PressableWithSecondaryInteractionProps from './types'; /** This is a special Pressable that calls onSecondaryInteraction when LongPressed. */ function PressableWithSecondaryInteraction( diff --git a/src/components/PressableWithSecondaryInteraction/index.tsx b/src/components/PressableWithSecondaryInteraction/index.tsx index 0cb53e40325a..5e2de765f733 100644 --- a/src/components/PressableWithSecondaryInteraction/index.tsx +++ b/src/components/PressableWithSecondaryInteraction/index.tsx @@ -1,11 +1,11 @@ import React, {forwardRef, useEffect, useRef} from 'react'; -import {GestureResponderEvent} from 'react-native'; -import {PressableRef} from '@components/Pressable/GenericPressable/types'; +import type {GestureResponderEvent} from 'react-native'; +import type {PressableRef} from '@components/Pressable/GenericPressable/types'; import PressableWithFeedback from '@components/Pressable/PressableWithFeedback'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; -import PressableWithSecondaryInteractionProps from './types'; +import type PressableWithSecondaryInteractionProps from './types'; /** This is a special Pressable that calls onSecondaryInteraction when LongPressed, or right-clicked. */ function PressableWithSecondaryInteraction( diff --git a/src/components/PressableWithSecondaryInteraction/types.ts b/src/components/PressableWithSecondaryInteraction/types.ts index bf999e9692b5..aa67d45d66fb 100644 --- a/src/components/PressableWithSecondaryInteraction/types.ts +++ b/src/components/PressableWithSecondaryInteraction/types.ts @@ -1,5 +1,5 @@ import type {GestureResponderEvent} from 'react-native'; -import {PressableWithFeedbackProps} from '@components/Pressable/PressableWithFeedback'; +import type {PressableWithFeedbackProps} from '@components/Pressable/PressableWithFeedback'; import type {ParsableStyle} from '@styles/utils/types'; type PressableWithSecondaryInteractionProps = PressableWithFeedbackProps & { diff --git a/src/components/QRCode.tsx b/src/components/QRCode.tsx index 99a3a1f64118..89c367bab222 100644 --- a/src/components/QRCode.tsx +++ b/src/components/QRCode.tsx @@ -1,5 +1,6 @@ -import React, {Ref} from 'react'; -import {ImageSourcePropType} from 'react-native'; +import type {Ref} from 'react'; +import React from 'react'; +import type {ImageSourcePropType} from 'react-native'; import QRCodeLibrary from 'react-native-qrcode-svg'; import useTheme from '@hooks/useTheme'; import CONST from '@src/CONST'; diff --git a/src/components/RNTextInput.tsx b/src/components/RNTextInput.tsx index 40dfc109ba6b..6b540494a364 100644 --- a/src/components/RNTextInput.tsx +++ b/src/components/RNTextInput.tsx @@ -1,7 +1,10 @@ -import React, {Component, ForwardedRef} from 'react'; +import type {Component, ForwardedRef} from 'react'; +import React from 'react'; // eslint-disable-next-line no-restricted-imports -import {TextInput, TextInputProps} from 'react-native'; -import Animated, {AnimatedProps} from 'react-native-reanimated'; +import type { TextInputProps} from 'react-native'; +import {TextInput} from 'react-native'; +import type {AnimatedProps} from 'react-native-reanimated'; +import Animated from 'react-native-reanimated'; import useTheme from '@hooks/useTheme'; type AnimatedTextInputRef = Component>; diff --git a/src/components/RadioButtonWithLabel.tsx b/src/components/RadioButtonWithLabel.tsx index 4c223262ac50..7368101a704a 100644 --- a/src/components/RadioButtonWithLabel.tsx +++ b/src/components/RadioButtonWithLabel.tsx @@ -1,5 +1,7 @@ -import React, {ComponentType} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {ComponentType} from 'react'; +import React from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import FormHelpMessage from './FormHelpMessage'; import * as Pressables from './Pressable'; diff --git a/src/components/ReportActionItem/MoneyReportView.tsx b/src/components/ReportActionItem/MoneyReportView.tsx index 36daa037fd78..85d408bef0d3 100644 --- a/src/components/ReportActionItem/MoneyReportView.tsx +++ b/src/components/ReportActionItem/MoneyReportView.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, TextStyle, View} from 'react-native'; +import type {StyleProp, TextStyle} from 'react-native'; +import { View} from 'react-native'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import SpacerView from '@components/SpacerView'; diff --git a/src/components/ReportActionItem/RenameAction.tsx b/src/components/ReportActionItem/RenameAction.tsx index ef9317ecac0e..b4b2553d652a 100644 --- a/src/components/ReportActionItem/RenameAction.tsx +++ b/src/components/ReportActionItem/RenameAction.tsx @@ -1,6 +1,7 @@ import React from 'react'; import Text from '@components/Text'; -import withCurrentUserPersonalDetails, {type WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails'; +import withCurrentUserPersonalDetails from '@components/withCurrentUserPersonalDetails'; +import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; diff --git a/src/components/ReportWelcomeText.tsx b/src/components/ReportWelcomeText.tsx index 3fa3439fe86a..e2b1460a51f5 100644 --- a/src/components/ReportWelcomeText.tsx +++ b/src/components/ReportWelcomeText.tsx @@ -1,6 +1,7 @@ import React from 'react'; import {View} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; diff --git a/src/components/SafeArea/index.ios.tsx b/src/components/SafeArea/index.ios.tsx index 1b2e1881ade3..2ef10a192a17 100644 --- a/src/components/SafeArea/index.ios.tsx +++ b/src/components/SafeArea/index.ios.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {SafeAreaView} from 'react-native-safe-area-context'; import useThemeStyles from '@hooks/useThemeStyles'; -import SafeAreaProps from './types'; +import type SafeAreaProps from './types'; function SafeArea({children}: SafeAreaProps) { const styles = useThemeStyles(); diff --git a/src/components/SafeArea/index.tsx b/src/components/SafeArea/index.tsx index 94090ef48642..5aa44c40e859 100644 --- a/src/components/SafeArea/index.tsx +++ b/src/components/SafeArea/index.tsx @@ -1,3 +1,3 @@ -import SafeAreaProps from './types'; +import type SafeAreaProps from './types'; export default ({children}: SafeAreaProps) => children; diff --git a/src/components/SafeArea/types.ts b/src/components/SafeArea/types.ts index 89faea46ab71..7cf53e13b72d 100644 --- a/src/components/SafeArea/types.ts +++ b/src/components/SafeArea/types.ts @@ -1,4 +1,4 @@ -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type SafeAreaProps = ChildrenProps; diff --git a/src/components/SafeAreaConsumer/index.android.tsx b/src/components/SafeAreaConsumer/index.android.tsx index 4e6c9bbd3528..f1523407805b 100644 --- a/src/components/SafeAreaConsumer/index.android.tsx +++ b/src/components/SafeAreaConsumer/index.android.tsx @@ -3,7 +3,7 @@ import React from 'react'; import {SafeAreaInsetsContext} from 'react-native-safe-area-context'; import useStyleUtils from '@hooks/useStyleUtils'; import StatusBar from '@libs/StatusBar'; -import SafeAreaConsumerProps from './types'; +import type SafeAreaConsumerProps from './types'; /** * This component is a light wrapper around the SafeAreaInsetsContext.Consumer. There are several places where we diff --git a/src/components/SafeAreaConsumer/index.tsx b/src/components/SafeAreaConsumer/index.tsx index c05e836a2348..926ff91258f9 100644 --- a/src/components/SafeAreaConsumer/index.tsx +++ b/src/components/SafeAreaConsumer/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; // eslint-disable-next-line no-restricted-imports import {SafeAreaInsetsContext} from 'react-native-safe-area-context'; import useStyleUtils from '@hooks/useStyleUtils'; -import SafeAreaConsumerProps from './types'; +import type SafeAreaConsumerProps from './types'; /** * This component is a light wrapper around the SafeAreaInsetsContext.Consumer. There are several places where we diff --git a/src/components/SafeAreaConsumer/types.ts b/src/components/SafeAreaConsumer/types.ts index bc81de96a082..432bf3f25ca1 100644 --- a/src/components/SafeAreaConsumer/types.ts +++ b/src/components/SafeAreaConsumer/types.ts @@ -1,5 +1,5 @@ -import {DimensionValue} from 'react-native'; -import {EdgeInsets} from 'react-native-safe-area-context'; +import type {DimensionValue} from 'react-native'; +import type {EdgeInsets} from 'react-native-safe-area-context'; type ChildrenProps = { paddingTop?: DimensionValue; diff --git a/src/components/ScrollViewWithContext.tsx b/src/components/ScrollViewWithContext.tsx index 7c75ae2f71b2..2c1eb2bd1fbb 100644 --- a/src/components/ScrollViewWithContext.tsx +++ b/src/components/ScrollViewWithContext.tsx @@ -1,5 +1,7 @@ -import React, {ForwardedRef, useMemo, useRef, useState} from 'react'; -import {NativeScrollEvent, NativeSyntheticEvent, ScrollView} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { useMemo, useRef, useState} from 'react'; +import type {NativeScrollEvent, NativeSyntheticEvent} from 'react-native'; +import { ScrollView} from 'react-native'; const MIN_SMOOTH_SCROLL_EVENT_THROTTLE = 16; diff --git a/src/components/Search.tsx b/src/components/Search.tsx index 10820f44738d..87875d956589 100644 --- a/src/components/Search.tsx +++ b/src/components/Search.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {GestureResponderEvent, StyleProp, View, ViewStyle} from 'react-native'; +import type {GestureResponderEvent, StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; diff --git a/src/components/SectionList/index.android.tsx b/src/components/SectionList/index.android.tsx index 82477fffc3ee..1aa9b501146c 100644 --- a/src/components/SectionList/index.android.tsx +++ b/src/components/SectionList/index.android.tsx @@ -1,6 +1,6 @@ import React, {forwardRef} from 'react'; import {SectionList as RNSectionList} from 'react-native'; -import ForwardedSectionList from './types'; +import type ForwardedSectionList from './types'; // eslint-disable-next-line react/function-component-definition const SectionListWithRef: ForwardedSectionList = (props, ref) => ( diff --git a/src/components/SectionList/index.tsx b/src/components/SectionList/index.tsx index 1c89b50468dd..4af7ad33705c 100644 --- a/src/components/SectionList/index.tsx +++ b/src/components/SectionList/index.tsx @@ -1,6 +1,6 @@ import React, {forwardRef} from 'react'; import {SectionList as RNSectionList} from 'react-native'; -import ForwardedSectionList from './types'; +import type ForwardedSectionList from './types'; // eslint-disable-next-line react/function-component-definition const SectionList: ForwardedSectionList = (props, ref) => ( diff --git a/src/components/SectionList/types.ts b/src/components/SectionList/types.ts index 093cb8f4e77c..4648172aabfd 100644 --- a/src/components/SectionList/types.ts +++ b/src/components/SectionList/types.ts @@ -1,5 +1,5 @@ -import {ForwardedRef} from 'react'; -import {SectionList, SectionListProps} from 'react-native'; +import type {ForwardedRef} from 'react'; +import type {SectionList, SectionListProps} from 'react-native'; type ForwardedSectionList = { (props: SectionListProps, ref: ForwardedRef): React.ReactNode; diff --git a/src/components/SelectCircle.tsx b/src/components/SelectCircle.tsx index 637c06f4d35f..f21d8d4cdbf1 100644 --- a/src/components/SelectCircle.tsx +++ b/src/components/SelectCircle.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Icon from './Icon'; diff --git a/src/components/SignInPageForm/index.native.tsx b/src/components/SignInPageForm/index.native.tsx index b39e4d681bbe..0d00c754d45a 100644 --- a/src/components/SignInPageForm/index.native.tsx +++ b/src/components/SignInPageForm/index.native.tsx @@ -1,6 +1,6 @@ import React from 'react'; import FormElement from '@components/FormElement'; -import SignInPageFormProps from './types'; +import type SignInPageFormProps from './types'; function SignInPageForm(props: SignInPageFormProps) { // eslint-disable-next-line react/jsx-props-no-spreading diff --git a/src/components/SignInPageForm/index.tsx b/src/components/SignInPageForm/index.tsx index 20b93e6db1b5..b9f0fe202dd1 100644 --- a/src/components/SignInPageForm/index.tsx +++ b/src/components/SignInPageForm/index.tsx @@ -1,7 +1,7 @@ import React, {useEffect, useRef} from 'react'; -import {View} from 'react-native'; +import type {View} from 'react-native'; import FormElement from '@components/FormElement'; -import SignInPageFormProps from './types'; +import type SignInPageFormProps from './types'; const preventFormDefault = (event: SubmitEvent) => { // When enter is pressed form is submitted to action url (POST /). diff --git a/src/components/SignInPageForm/types.ts b/src/components/SignInPageForm/types.ts index 02d948f917b9..c7f71a3f7151 100644 --- a/src/components/SignInPageForm/types.ts +++ b/src/components/SignInPageForm/types.ts @@ -1,4 +1,4 @@ -import {ViewProps} from 'react-native'; +import type {ViewProps} from 'react-native'; type SignInPageFormProps = ViewProps; diff --git a/src/components/SingleChoiceQuestion.tsx b/src/components/SingleChoiceQuestion.tsx index 5b4ea54e4436..9f869ef969c4 100644 --- a/src/components/SingleChoiceQuestion.tsx +++ b/src/components/SingleChoiceQuestion.tsx @@ -1,9 +1,11 @@ -import React, {ForwardedRef, forwardRef} from 'react'; -import {Text as RNText} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef} from 'react'; +import type {Text as RNText} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import type {MaybePhraseKey} from '@libs/Localize'; import FormHelpMessage from './FormHelpMessage'; -import RadioButtons, {Choice} from './RadioButtons'; +import type {Choice} from './RadioButtons'; +import RadioButtons from './RadioButtons'; import Text from './Text'; type SingleChoiceQuestionProps = { diff --git a/src/components/SingleOptionSelector.tsx b/src/components/SingleOptionSelector.tsx index bc912aacf41d..9832167e3f6a 100644 --- a/src/components/SingleOptionSelector.tsx +++ b/src/components/SingleOptionSelector.tsx @@ -3,7 +3,7 @@ import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; -import {TranslationPaths} from '@src/languages/types'; +import type {TranslationPaths} from '@src/languages/types'; import PressableWithoutFeedback from './Pressable/PressableWithoutFeedback'; import SelectCircle from './SelectCircle'; import Text from './Text'; diff --git a/src/components/SkeletonViewContentLoader/index.native.tsx b/src/components/SkeletonViewContentLoader/index.native.tsx index 370eb2f669f1..6d275e065bb0 100644 --- a/src/components/SkeletonViewContentLoader/index.native.tsx +++ b/src/components/SkeletonViewContentLoader/index.native.tsx @@ -1,6 +1,6 @@ import React from 'react'; import SkeletonViewContentLoader from 'react-content-loader/native'; -import SkeletonViewContentLoaderProps from './types'; +import type SkeletonViewContentLoaderProps from './types'; function ContentLoader(props: SkeletonViewContentLoaderProps) { // eslint-disable-next-line react/jsx-props-no-spreading diff --git a/src/components/SkeletonViewContentLoader/index.tsx b/src/components/SkeletonViewContentLoader/index.tsx index 105e677ad7c1..ad3858a2d8d4 100644 --- a/src/components/SkeletonViewContentLoader/index.tsx +++ b/src/components/SkeletonViewContentLoader/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import SkeletonViewContentLoader from 'react-content-loader'; -import SkeletonViewContentLoaderProps from './types'; +import type SkeletonViewContentLoaderProps from './types'; function ContentLoader(props: SkeletonViewContentLoaderProps) { // eslint-disable-next-line react/jsx-props-no-spreading diff --git a/src/components/SkeletonViewContentLoader/types.ts b/src/components/SkeletonViewContentLoader/types.ts index 23f0a051e518..5f4089f316dd 100644 --- a/src/components/SkeletonViewContentLoader/types.ts +++ b/src/components/SkeletonViewContentLoader/types.ts @@ -1,5 +1,5 @@ -import {IContentLoaderProps} from 'react-content-loader'; -import {IContentLoaderProps as NativeIContentLoaderProps} from 'react-content-loader/native'; +import type {IContentLoaderProps} from 'react-content-loader'; +import type {IContentLoaderProps as NativeIContentLoaderProps} from 'react-content-loader/native'; type SkeletonViewContentLoaderProps = IContentLoaderProps & NativeIContentLoaderProps; diff --git a/src/components/SpacerView.tsx b/src/components/SpacerView.tsx index 4c54aef61ba2..23c109f7d589 100644 --- a/src/components/SpacerView.tsx +++ b/src/components/SpacerView.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {StyleProp, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import Animated, {useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import usePrevious from '@hooks/usePrevious'; import CONST from '@src/CONST'; diff --git a/src/components/SplashScreenHider/index.native.tsx b/src/components/SplashScreenHider/index.native.tsx index 863be2f5910c..b722f189f1c1 100644 --- a/src/components/SplashScreenHider/index.native.tsx +++ b/src/components/SplashScreenHider/index.native.tsx @@ -1,5 +1,6 @@ import {useCallback, useRef} from 'react'; -import {StyleSheet, ViewStyle} from 'react-native'; +import type { ViewStyle} from 'react-native'; +import {StyleSheet} from 'react-native'; import Reanimated, {Easing, runOnJS, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import Logo from '@assets/images/new-expensify-dark.svg'; import ImageSVG from '@components/ImageSVG'; diff --git a/src/components/SplashScreenHider/types.ts b/src/components/SplashScreenHider/types.ts index ff7b2beb1520..e48bbdcee307 100644 --- a/src/components/SplashScreenHider/types.ts +++ b/src/components/SplashScreenHider/types.ts @@ -1,4 +1,4 @@ -import {ReactNode} from 'react'; +import type {ReactNode} from 'react'; type SplashScreenHiderProps = { /** Splash screen has been hidden */ diff --git a/src/components/SubscriptAvatar.tsx b/src/components/SubscriptAvatar.tsx index 611fbe2cbbc4..cd2562b24351 100644 --- a/src/components/SubscriptAvatar.tsx +++ b/src/components/SubscriptAvatar.tsx @@ -1,12 +1,12 @@ import React, {memo} from 'react'; import {View} from 'react-native'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import type {AvatarSource} from '@libs/UserUtils'; import CONST from '@src/CONST'; -import {AvatarType} from '@src/types/onyx/OnyxCommon'; +import type {AvatarType} from '@src/types/onyx/OnyxCommon'; import Avatar from './Avatar'; import UserDetailsTooltip from './UserDetailsTooltip'; diff --git a/src/components/SwipeableView/index.native.tsx b/src/components/SwipeableView/index.native.tsx index 91d851101d4e..67c6695c1a7f 100644 --- a/src/components/SwipeableView/index.native.tsx +++ b/src/components/SwipeableView/index.native.tsx @@ -1,7 +1,7 @@ import React, {useRef} from 'react'; import {PanResponder, View} from 'react-native'; import CONST from '@src/CONST'; -import SwipeableViewProps from './types'; +import type SwipeableViewProps from './types'; function SwipeableView({children, onSwipeDown}: SwipeableViewProps) { const minimumPixelDistance = CONST.COMPOSER_MAX_HEIGHT; diff --git a/src/components/SwipeableView/index.tsx b/src/components/SwipeableView/index.tsx index 335c3e7dcf03..d3881d2efd21 100644 --- a/src/components/SwipeableView/index.tsx +++ b/src/components/SwipeableView/index.tsx @@ -1,4 +1,4 @@ -import SwipeableViewProps from './types'; +import type SwipeableViewProps from './types'; // Swipeable View is available just on Android/iOS for now. export default ({children}: SwipeableViewProps) => children; diff --git a/src/components/SwipeableView/types.ts b/src/components/SwipeableView/types.ts index 560df7ef5a45..738e21bb73ee 100644 --- a/src/components/SwipeableView/types.ts +++ b/src/components/SwipeableView/types.ts @@ -1,4 +1,4 @@ -import {ReactNode} from 'react'; +import type {ReactNode} from 'react'; type SwipeableViewProps = { /** The content to be rendered within the SwipeableView */ diff --git a/src/components/TabSelector/TabIcon.tsx b/src/components/TabSelector/TabIcon.tsx index 3d3850a37061..31833b2fc852 100644 --- a/src/components/TabSelector/TabIcon.tsx +++ b/src/components/TabSelector/TabIcon.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {Animated, StyleSheet, View} from 'react-native'; import Icon from '@components/Icon'; import useTheme from '@hooks/useTheme'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; type TabIconProps = { /** Icon to display on tab */ diff --git a/src/components/TabSelector/TabSelector.tsx b/src/components/TabSelector/TabSelector.tsx index 3809460436e5..1b8b6bc1b22b 100644 --- a/src/components/TabSelector/TabSelector.tsx +++ b/src/components/TabSelector/TabSelector.tsx @@ -1,16 +1,16 @@ -import {MaterialTopTabNavigationHelpers} from '@react-navigation/material-top-tabs/lib/typescript/src/types'; -import {TabNavigationState} from '@react-navigation/native'; +import type {MaterialTopTabNavigationHelpers} from '@react-navigation/material-top-tabs/lib/typescript/src/types'; +import type {TabNavigationState} from '@react-navigation/native'; import React, {useCallback, useEffect, useMemo, useState} from 'react'; import type {Animated} from 'react-native'; import {View} from 'react-native'; import * as Expensicons from '@components/Icon/Expensicons'; -import {LocaleContextProps} from '@components/LocaleContextProvider'; +import type {LocaleContextProps} from '@components/LocaleContextProvider'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; -import {RootStackParamList} from '@libs/Navigation/types'; +import type {RootStackParamList} from '@libs/Navigation/types'; import CONST from '@src/CONST'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; import TabSelectorItem from './TabSelectorItem'; type TabSelectorProps = { diff --git a/src/components/TabSelector/TabSelectorItem.tsx b/src/components/TabSelector/TabSelectorItem.tsx index a246e1a14b54..d5507c8c83db 100644 --- a/src/components/TabSelector/TabSelectorItem.tsx +++ b/src/components/TabSelector/TabSelectorItem.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {Animated, StyleSheet} from 'react-native'; import PressableWithFeedback from '@components/Pressable/PressableWithFeedback'; import useThemeStyles from '@hooks/useThemeStyles'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; import TabIcon from './TabIcon'; import TabLabel from './TabLabel'; diff --git a/src/components/TaskHeaderActionButton.tsx b/src/components/TaskHeaderActionButton.tsx index b1a32b356ae1..96f7e040ae0e 100644 --- a/src/components/TaskHeaderActionButton.tsx +++ b/src/components/TaskHeaderActionButton.tsx @@ -1,13 +1,14 @@ import React from 'react'; import {View} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ReportUtils from '@libs/ReportUtils'; import * as Session from '@userActions/Session'; import * as Task from '@userActions/Task'; import ONYXKEYS from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; import Button from './Button'; type TaskHeaderActionButtonOnyxProps = { diff --git a/src/components/TestToolMenu.tsx b/src/components/TestToolMenu.tsx index 82b597f77268..74e099af2820 100644 --- a/src/components/TestToolMenu.tsx +++ b/src/components/TestToolMenu.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ApiUtils from '@libs/ApiUtils'; import compose from '@libs/compose'; @@ -8,8 +9,8 @@ import * as Session from '@userActions/Session'; import * as User from '@userActions/User'; import CONFIG from '@src/CONFIG'; import ONYXKEYS from '@src/ONYXKEYS'; -import NetworkOnyx from '@src/types/onyx/Network'; -import UserOnyx from '@src/types/onyx/User'; +import type NetworkOnyx from '@src/types/onyx/Network'; +import type UserOnyx from '@src/types/onyx/User'; import Button from './Button'; import {withNetwork} from './OnyxProvider'; import Switch from './Switch'; diff --git a/src/components/TestToolsModal.tsx b/src/components/TestToolsModal.tsx index 4138df64adc2..574dd80257f7 100644 --- a/src/components/TestToolsModal.tsx +++ b/src/components/TestToolsModal.tsx @@ -1,6 +1,7 @@ import React from 'react'; import {View} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import toggleTestToolsModal from '@userActions/TestTool'; import CONST from '@src/CONST'; diff --git a/src/components/Text.tsx b/src/components/Text.tsx index 0d201bd253c4..bf464aeb7270 100644 --- a/src/components/Text.tsx +++ b/src/components/Text.tsx @@ -1,10 +1,11 @@ -import React, {ForwardedRef} from 'react'; -import {Text as RNText, TextProps as RNTextProps, StyleSheet} from 'react-native'; -import type {TextStyle} from 'react-native'; +import type {ForwardedRef} from 'react'; +import React from 'react'; +import {Text as RNText, StyleSheet} from 'react-native'; +import type {TextStyle, TextProps as RNTextProps} from 'react-native'; import useTheme from '@hooks/useTheme'; import fontFamily from '@styles/utils/fontFamily'; import variables from '@styles/variables'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type TextProps = RNTextProps & ChildrenProps & { diff --git a/src/components/TextInput/BaseTextInput/index.native.tsx b/src/components/TextInput/BaseTextInput/index.native.tsx index 4f909dcf6e64..7a5fc3a62838 100644 --- a/src/components/TextInput/BaseTextInput/index.native.tsx +++ b/src/components/TextInput/BaseTextInput/index.native.tsx @@ -1,13 +1,14 @@ import Str from 'expensify-common/lib/str'; import React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react'; -import {ActivityIndicator, Animated, StyleSheet, TextInput, View} from 'react-native'; -import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInputFocusEventData, ViewStyle} from 'react-native'; +import {ActivityIndicator, Animated, StyleSheet, View} from 'react-native'; +import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInputFocusEventData, ViewStyle, TextInput} from 'react-native'; import Checkbox from '@components/Checkbox'; import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; -import RNTextInput, {type AnimatedTextInputRef} from '@components/RNTextInput'; +import RNTextInput from '@components/RNTextInput'; +import type {AnimatedTextInputRef} from '@components/RNTextInput'; import SwipeInterceptPanResponder from '@components/SwipeInterceptPanResponder'; import Text from '@components/Text'; import * as styleConst from '@components/TextInput/styleConst'; diff --git a/src/components/TextInput/BaseTextInput/index.tsx b/src/components/TextInput/BaseTextInput/index.tsx index a66df0496a1a..89711cd0859f 100644 --- a/src/components/TextInput/BaseTextInput/index.tsx +++ b/src/components/TextInput/BaseTextInput/index.tsx @@ -1,13 +1,14 @@ import Str from 'expensify-common/lib/str'; import React, {forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'; -import {ActivityIndicator, Animated, StyleSheet, TextInput, View} from 'react-native'; -import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInputFocusEventData, ViewStyle} from 'react-native'; +import {ActivityIndicator, Animated, StyleSheet, View} from 'react-native'; +import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInputFocusEventData, ViewStyle, TextInput} from 'react-native'; import Checkbox from '@components/Checkbox'; import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; -import RNTextInput, {AnimatedTextInputRef} from '@components/RNTextInput'; +import type {AnimatedTextInputRef} from '@components/RNTextInput'; +import RNTextInput from '@components/RNTextInput'; import SwipeInterceptPanResponder from '@components/SwipeInterceptPanResponder'; import Text from '@components/Text'; import * as styleConst from '@components/TextInput/styleConst'; diff --git a/src/components/TextInput/BaseTextInput/types.ts b/src/components/TextInput/BaseTextInput/types.ts index 2b8264af815b..f8376219d80f 100644 --- a/src/components/TextInput/BaseTextInput/types.ts +++ b/src/components/TextInput/BaseTextInput/types.ts @@ -2,7 +2,7 @@ import type {Component, ForwardedRef} from 'react'; import type {GestureResponderEvent, StyleProp, TextInputProps, TextStyle, ViewStyle} from 'react-native'; import type {AnimatedProps} from 'react-native-reanimated'; import type {MaybePhraseKey} from '@libs/Localize'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; type CustomBaseTextInputProps = { /** Input label */ diff --git a/src/components/TextInput/TextInputLabel/index.tsx b/src/components/TextInput/TextInputLabel/index.tsx index 628de2970331..7f1263ac273d 100644 --- a/src/components/TextInput/TextInputLabel/index.tsx +++ b/src/components/TextInput/TextInputLabel/index.tsx @@ -1,5 +1,6 @@ import React, {useEffect, useRef} from 'react'; -import {Animated, Text} from 'react-native'; +import type { Text} from 'react-native'; +import {Animated} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; import type TextInputLabelProps from './types'; diff --git a/src/components/TextInput/TextInputLabel/types.ts b/src/components/TextInput/TextInputLabel/types.ts index 6f85eef18f42..e8ec50ffb0c5 100644 --- a/src/components/TextInput/TextInputLabel/types.ts +++ b/src/components/TextInput/TextInputLabel/types.ts @@ -1,4 +1,4 @@ -import {Animated} from 'react-native'; +import type {Animated} from 'react-native'; type TextInputLabelProps = { /** Label */ diff --git a/src/components/TextLink.tsx b/src/components/TextLink.tsx index 1a67e7bc4c5f..435f56484de7 100644 --- a/src/components/TextLink.tsx +++ b/src/components/TextLink.tsx @@ -1,10 +1,12 @@ -import React, {ForwardedRef, forwardRef, KeyboardEventHandler, MouseEventHandler} from 'react'; -import {GestureResponderEvent, Text as RNText, StyleProp, TextStyle} from 'react-native'; +import type {ForwardedRef, KeyboardEventHandler, MouseEventHandler} from 'react'; +import React, { forwardRef} from 'react'; +import type {GestureResponderEvent, Text as RNText, StyleProp, TextStyle} from 'react-native'; import useEnvironment from '@hooks/useEnvironment'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Link from '@userActions/Link'; import CONST from '@src/CONST'; -import Text, {TextProps} from './Text'; +import type {TextProps} from './Text'; +import Text from './Text'; type LinkProps = { /** Link to open in new tab */ diff --git a/src/components/TextWithEllipsis/index.tsx b/src/components/TextWithEllipsis/index.tsx index fda0d5ab576e..f4fdc5b5a431 100644 --- a/src/components/TextWithEllipsis/index.tsx +++ b/src/components/TextWithEllipsis/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/ThemeProvider.tsx b/src/components/ThemeProvider.tsx index 34bc32be9c99..f3d2d9e64ca7 100644 --- a/src/components/ThemeProvider.tsx +++ b/src/components/ThemeProvider.tsx @@ -4,7 +4,7 @@ import React, {useMemo} from 'react'; import useThemePreferenceWithStaticOverride from '@hooks/useThemePreferenceWithStaticOverride'; import themes from '@styles/theme'; import ThemeContext from '@styles/theme/context/ThemeContext'; -import {ThemePreferenceWithoutSystem} from '@styles/theme/types'; +import type {ThemePreferenceWithoutSystem} from '@styles/theme/types'; const propTypes = { /** Rendered child component */ diff --git a/src/components/ThumbnailImage.tsx b/src/components/ThumbnailImage.tsx index 08b269e45f62..d40f840bc141 100644 --- a/src/components/ThumbnailImage.tsx +++ b/src/components/ThumbnailImage.tsx @@ -1,6 +1,7 @@ import lodashClamp from 'lodash/clamp'; import React, {useCallback, useState} from 'react'; -import {Dimensions, StyleProp, View, ViewStyle} from 'react-native'; +import type { StyleProp, ViewStyle} from 'react-native'; +import {Dimensions, View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; diff --git a/src/components/TimePicker/setCursorPosition/index.ios.ts b/src/components/TimePicker/setCursorPosition/index.ios.ts index 7e51abc3212e..63edf5f3dce8 100644 --- a/src/components/TimePicker/setCursorPosition/index.ios.ts +++ b/src/components/TimePicker/setCursorPosition/index.ios.ts @@ -1,4 +1,4 @@ -import SetCursorPosition from './types'; +import type SetCursorPosition from './types'; const setCursorPosition: SetCursorPosition = (position, ref, setSelection) => { const selection = { diff --git a/src/components/TimePicker/setCursorPosition/index.ts b/src/components/TimePicker/setCursorPosition/index.ts index 4d114641909f..5bfc8c1bd5da 100644 --- a/src/components/TimePicker/setCursorPosition/index.ts +++ b/src/components/TimePicker/setCursorPosition/index.ts @@ -1,4 +1,4 @@ -import SetCursorPosition from './types'; +import type SetCursorPosition from './types'; const setCursorPosition: SetCursorPosition = (position, ref, setSelection) => { setSelection({ diff --git a/src/components/TimePicker/setCursorPosition/types.ts b/src/components/TimePicker/setCursorPosition/types.ts index f7fd20a59e8e..671bf86bf209 100644 --- a/src/components/TimePicker/setCursorPosition/types.ts +++ b/src/components/TimePicker/setCursorPosition/types.ts @@ -1,5 +1,5 @@ -import {RefObject} from 'react'; -import {TextInput} from 'react-native'; +import type {RefObject} from 'react'; +import type {TextInput} from 'react-native'; type SetCursorPosition = (position: number, ref: RefObject, setSelection: (value: {start: number; end: number}) => void) => void; diff --git a/src/components/Tooltip/BaseTooltip/index.native.tsx b/src/components/Tooltip/BaseTooltip/index.native.tsx index 6d9eb24aaec5..9d4bb1079703 100644 --- a/src/components/Tooltip/BaseTooltip/index.native.tsx +++ b/src/components/Tooltip/BaseTooltip/index.native.tsx @@ -1,5 +1,5 @@ import {forwardRef} from 'react'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; // We can't use the common component for the Tooltip as Web implementation uses DOM specific method // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/src/components/Tooltip/BaseTooltip/index.tsx b/src/components/Tooltip/BaseTooltip/index.tsx index e2a2c46e4546..c284016a593f 100644 --- a/src/components/Tooltip/BaseTooltip/index.tsx +++ b/src/components/Tooltip/BaseTooltip/index.tsx @@ -1,10 +1,11 @@ import {BoundsObserver} from '@react-ng/bounds-observer'; -import React, {ForwardedRef, forwardRef, memo, useCallback, useEffect, useRef, useState} from 'react'; +import type {ForwardedRef} from 'react'; +import React, { forwardRef, memo, useCallback, useEffect, useRef, useState} from 'react'; import {Animated} from 'react-native'; import Hoverable from '@components/Hoverable'; import TooltipRenderedOnPageBody from '@components/Tooltip/TooltipRenderedOnPageBody'; import TooltipSense from '@components/Tooltip/TooltipSense'; -import TooltipProps from '@components/Tooltip/types'; +import type TooltipProps from '@components/Tooltip/types'; import useLocalize from '@hooks/useLocalize'; import usePrevious from '@hooks/usePrevious'; import useWindowDimensions from '@hooks/useWindowDimensions'; diff --git a/src/components/Tooltip/PopoverAnchorTooltip.tsx b/src/components/Tooltip/PopoverAnchorTooltip.tsx index e524c55f6d2f..792977ff7c43 100644 --- a/src/components/Tooltip/PopoverAnchorTooltip.tsx +++ b/src/components/Tooltip/PopoverAnchorTooltip.tsx @@ -1,8 +1,8 @@ -import {BoundsObserver} from '@react-ng/bounds-observer'; +import type {BoundsObserver} from '@react-ng/bounds-observer'; import React, {useContext, useMemo, useRef} from 'react'; import {PopoverContext} from '@components/PopoverProvider'; import BaseTooltip from './BaseTooltip'; -import {TooltipExtendedProps} from './types'; +import type {TooltipExtendedProps} from './types'; function PopoverAnchorTooltip({shouldRender = true, children, ...props}: TooltipExtendedProps) { const {isOpen, popover} = useContext(PopoverContext); diff --git a/src/components/Tooltip/TooltipRenderedOnPageBody.tsx b/src/components/Tooltip/TooltipRenderedOnPageBody.tsx index 4549f48501bf..5ffd8596e6de 100644 --- a/src/components/Tooltip/TooltipRenderedOnPageBody.tsx +++ b/src/components/Tooltip/TooltipRenderedOnPageBody.tsx @@ -6,7 +6,7 @@ import useStyleUtils from '@hooks/useStyleUtils'; import Log from '@libs/Log'; import textRef from '@src/types/utils/textRef'; import viewRef from '@src/types/utils/viewRef'; -import TooltipProps from './types'; +import type TooltipProps from './types'; type TooltipRenderedOnPageBodyProps = { /** Window width */ diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx index 6d274b87badb..603698592711 100644 --- a/src/components/Tooltip/index.tsx +++ b/src/components/Tooltip/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import BaseTooltip from './BaseTooltip'; -import {TooltipExtendedProps} from './types'; +import type {TooltipExtendedProps} from './types'; function Tooltip({shouldRender = true, children, ...props}: TooltipExtendedProps) { if (!shouldRender) { diff --git a/src/components/Tooltip/types.ts b/src/components/Tooltip/types.ts index df95c3ea5979..f7ae0737ff7b 100644 --- a/src/components/Tooltip/types.ts +++ b/src/components/Tooltip/types.ts @@ -1,4 +1,4 @@ -import {ReactElement, ReactNode} from 'react'; +import type {ReactElement, ReactNode} from 'react'; type TooltipProps = { /** The text to display in the tooltip. If text is ommitted, only children will be rendered. */ diff --git a/src/components/ValidateCode/ValidateCodeModal.tsx b/src/components/ValidateCode/ValidateCodeModal.tsx index 257912ab623a..715f07070975 100644 --- a/src/components/ValidateCode/ValidateCodeModal.tsx +++ b/src/components/ValidateCode/ValidateCodeModal.tsx @@ -1,6 +1,7 @@ import React, {useCallback} from 'react'; import {View} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import * as Illustrations from '@components/Icon/Illustrations'; @@ -12,7 +13,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; import * as Session from '@userActions/Session'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Session as SessionType} from '@src/types/onyx'; +import type {Session as SessionType} from '@src/types/onyx'; type ValidateCodeModalOnyxProps = { /** Session of currently logged in user */ diff --git a/src/components/WalletSection.tsx b/src/components/WalletSection.tsx index 69c4bd259a5d..0c966367be45 100644 --- a/src/components/WalletSection.tsx +++ b/src/components/WalletSection.tsx @@ -1,7 +1,7 @@ import React from 'react'; import useThemeStyles from '@hooks/useThemeStyles'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; -import IconAsset from '@src/types/utils/IconAsset'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import type IconAsset from '@src/types/utils/IconAsset'; import Section from './Section'; type WalletSectionProps = ChildrenProps & { diff --git a/src/components/WalletStatementModal/index.native.tsx b/src/components/WalletStatementModal/index.native.tsx index f54d7c68fe95..a287c68504dc 100644 --- a/src/components/WalletStatementModal/index.native.tsx +++ b/src/components/WalletStatementModal/index.native.tsx @@ -1,7 +1,8 @@ import React, {useCallback, useRef} from 'react'; import {withOnyx} from 'react-native-onyx'; -import {WebView, WebViewNavigation} from 'react-native-webview'; -import {ValueOf} from 'type-fest'; +import type { WebViewNavigation} from 'react-native-webview'; +import {WebView} from 'react-native-webview'; +import type {ValueOf} from 'type-fest'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import Navigation from '@libs/Navigation/Navigation'; import * as Report from '@userActions/Report'; diff --git a/src/components/WalletStatementModal/types.ts b/src/components/WalletStatementModal/types.ts index bb926b8250ae..f6989f37f49b 100644 --- a/src/components/WalletStatementModal/types.ts +++ b/src/components/WalletStatementModal/types.ts @@ -1,4 +1,4 @@ -import {OnyxEntry} from 'react-native-onyx/lib/types'; +import type {OnyxEntry} from 'react-native-onyx/lib/types'; import type {Session} from '@src/types/onyx'; type WalletStatementOnyxProps = { diff --git a/src/components/createOnyxContext.tsx b/src/components/createOnyxContext.tsx index f7b2d6cbf297..99f48ea80d5f 100644 --- a/src/components/createOnyxContext.tsx +++ b/src/components/createOnyxContext.tsx @@ -1,9 +1,10 @@ import Str from 'expensify-common/lib/str'; -import React, {ComponentType, createContext, ForwardedRef, forwardRef, ForwardRefExoticComponent, PropsWithoutRef, ReactNode, RefAttributes, useContext} from 'react'; +import type {ComponentType, ForwardedRef, ForwardRefExoticComponent, PropsWithoutRef, ReactNode, RefAttributes} from 'react'; +import React, { createContext, forwardRef, useContext} from 'react'; import {withOnyx} from 'react-native-onyx'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import {OnyxCollectionKey, OnyxKey, OnyxKeyValue, OnyxValues} from '@src/ONYXKEYS'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {OnyxCollectionKey, OnyxKey, OnyxKeyValue, OnyxValues} from '@src/ONYXKEYS'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type OnyxKeys = (OnyxKey | OnyxCollectionKey) & keyof OnyxValues; diff --git a/src/components/withCurrentReportID.tsx b/src/components/withCurrentReportID.tsx index 3ce9eeae37b5..b1f84db36257 100644 --- a/src/components/withCurrentReportID.tsx +++ b/src/components/withCurrentReportID.tsx @@ -1,6 +1,7 @@ -import {NavigationState} from '@react-navigation/native'; +import type {NavigationState} from '@react-navigation/native'; import PropTypes from 'prop-types'; -import React, {ComponentType, createContext, ForwardedRef, forwardRef, RefAttributes, useCallback, useMemo, useState} from 'react'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { createContext, forwardRef, useCallback, useMemo, useState} from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import Navigation from '@libs/Navigation/Navigation'; diff --git a/src/components/withCurrentUserPersonalDetails.tsx b/src/components/withCurrentUserPersonalDetails.tsx index 289e2254952f..d329aa2a5c2d 100644 --- a/src/components/withCurrentUserPersonalDetails.tsx +++ b/src/components/withCurrentUserPersonalDetails.tsx @@ -1,5 +1,7 @@ -import React, {ComponentType, ForwardedRef, RefAttributes, useMemo} from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { useMemo} from 'react'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import personalDetailsPropType from '@pages/personalDetailsPropType'; import CONST from '@src/CONST'; diff --git a/src/components/withEnvironment.tsx b/src/components/withEnvironment.tsx index 6054b43f97f5..21854c11b5ce 100644 --- a/src/components/withEnvironment.tsx +++ b/src/components/withEnvironment.tsx @@ -1,5 +1,6 @@ -import React, {ComponentType, createContext, ForwardedRef, forwardRef, ReactElement, ReactNode, RefAttributes, useContext, useEffect, useMemo, useState} from 'react'; -import {ValueOf} from 'type-fest'; +import type {ComponentType, ForwardedRef, ReactElement, ReactNode, RefAttributes} from 'react'; +import React, { createContext, forwardRef, useContext, useEffect, useMemo, useState} from 'react'; +import type {ValueOf} from 'type-fest'; import * as Environment from '@libs/Environment/Environment'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import CONST from '@src/CONST'; diff --git a/src/components/withKeyboardState.tsx b/src/components/withKeyboardState.tsx index 0c168a4537f5..958c1fe4f867 100755 --- a/src/components/withKeyboardState.tsx +++ b/src/components/withKeyboardState.tsx @@ -1,8 +1,9 @@ import PropTypes from 'prop-types'; -import React, {ComponentType, createContext, ForwardedRef, forwardRef, ReactElement, RefAttributes, useEffect, useMemo, useState} from 'react'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React, { createContext, forwardRef, useEffect, useMemo, useState} from 'react'; import {Keyboard} from 'react-native'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type KeyboardStateContextValue = { /** Whether the keyboard is open */ diff --git a/src/components/withLocalize.tsx b/src/components/withLocalize.tsx index 040ec509135e..c1b756cde08f 100755 --- a/src/components/withLocalize.tsx +++ b/src/components/withLocalize.tsx @@ -1,7 +1,9 @@ import PropTypes from 'prop-types'; -import React, {ComponentType, ForwardedRef, forwardRef, ReactElement, RefAttributes} from 'react'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React, { forwardRef} from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import {LocaleContext, LocaleContextProps} from './LocaleContextProvider'; +import type { LocaleContextProps} from './LocaleContextProvider'; +import {LocaleContext} from './LocaleContextProvider'; const withLocalizePropTypes = { /** Returns translated string for given locale and phrase */ diff --git a/src/components/withNavigation.tsx b/src/components/withNavigation.tsx index 88788edafb79..aae8c157d75a 100644 --- a/src/components/withNavigation.tsx +++ b/src/components/withNavigation.tsx @@ -1,7 +1,9 @@ -import {NavigationProp, useNavigation} from '@react-navigation/native'; -import React, {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import type {NavigationProp} from '@react-navigation/native'; +import { useNavigation} from '@react-navigation/native'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import {RootStackParamList} from '@libs/Navigation/types'; +import type {RootStackParamList} from '@libs/Navigation/types'; type WithNavigationProps = { navigation: NavigationProp; diff --git a/src/components/withNavigationFallback.tsx b/src/components/withNavigationFallback.tsx index aa58b12d4b01..5a8011205a00 100644 --- a/src/components/withNavigationFallback.tsx +++ b/src/components/withNavigationFallback.tsx @@ -1,7 +1,8 @@ import {NavigationContext} from '@react-navigation/core'; -import {NavigationProp} from '@react-navigation/native'; -import {ParamListBase} from '@react-navigation/routers'; -import React, {ComponentType, ForwardedRef, forwardRef, ReactElement, RefAttributes, useContext, useMemo} from 'react'; +import type {NavigationProp} from '@react-navigation/native'; +import type {ParamListBase} from '@react-navigation/routers'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React, { forwardRef, useContext, useMemo} from 'react'; type AddListenerCallback = () => void; diff --git a/src/components/withNavigationFocus.tsx b/src/components/withNavigationFocus.tsx index 8dcd06ecb4c8..90a674a2e56e 100644 --- a/src/components/withNavigationFocus.tsx +++ b/src/components/withNavigationFocus.tsx @@ -1,5 +1,6 @@ import {useIsFocused} from '@react-navigation/native'; -import React, {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; type WithNavigationFocusProps = { diff --git a/src/components/withStyleUtils.tsx b/src/components/withStyleUtils.tsx index 821587a1ae43..cc45738c5bbf 100644 --- a/src/components/withStyleUtils.tsx +++ b/src/components/withStyleUtils.tsx @@ -1,8 +1,9 @@ import PropTypes from 'prop-types'; -import React, {ComponentType, ForwardedRef, forwardRef, ReactElement, RefAttributes} from 'react'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React, { forwardRef} from 'react'; import useStyleUtils from '@hooks/useStyleUtils'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import {StyleUtilsType} from '@styles/utils'; +import type {StyleUtilsType} from '@styles/utils'; const withStyleUtilsPropTypes = { StyleUtils: PropTypes.object.isRequired, diff --git a/src/components/withTheme.tsx b/src/components/withTheme.tsx index 93349e8e2ba4..75f3e571282c 100644 --- a/src/components/withTheme.tsx +++ b/src/components/withTheme.tsx @@ -1,8 +1,9 @@ import PropTypes from 'prop-types'; -import React, {ComponentType, ForwardedRef, forwardRef, ReactElement, RefAttributes} from 'react'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React, { forwardRef} from 'react'; import useTheme from '@hooks/useTheme'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import {type ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; const withThemePropTypes = { theme: PropTypes.object.isRequired, diff --git a/src/components/withThemeStyles.tsx b/src/components/withThemeStyles.tsx index 0ae960bd4351..8b02897eb8d9 100644 --- a/src/components/withThemeStyles.tsx +++ b/src/components/withThemeStyles.tsx @@ -1,8 +1,9 @@ import PropTypes from 'prop-types'; -import React, {ComponentType, ForwardedRef, forwardRef, ReactElement, RefAttributes} from 'react'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React, { forwardRef} from 'react'; import useThemeStyles from '@hooks/useThemeStyles'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import {type ThemeStyles} from '@styles/index'; +import type {ThemeStyles} from '@styles/index'; const withThemeStylesPropTypes = { themeStyles: PropTypes.object.isRequired, diff --git a/src/components/withToggleVisibilityView.tsx b/src/components/withToggleVisibilityView.tsx index 974ce3b7f855..86513f1bd0dc 100644 --- a/src/components/withToggleVisibilityView.tsx +++ b/src/components/withToggleVisibilityView.tsx @@ -1,6 +1,7 @@ -import React, {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; +import React from 'react'; import {View} from 'react-native'; -import {SetOptional} from 'type-fest'; +import type {SetOptional} from 'type-fest'; import useThemeStyles from '@hooks/useThemeStyles'; import getComponentDisplayName from '@libs/getComponentDisplayName'; diff --git a/src/components/withViewportOffsetTop.tsx b/src/components/withViewportOffsetTop.tsx index d6c170b20480..424bedb14870 100644 --- a/src/components/withViewportOffsetTop.tsx +++ b/src/components/withViewportOffsetTop.tsx @@ -1,4 +1,5 @@ -import React, {ComponentType, ForwardedRef, forwardRef, RefAttributes, useEffect, useState} from 'react'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { forwardRef, useEffect, useState} from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import addViewportResizeListener from '@libs/VisualViewport'; diff --git a/src/components/withWindowDimensions/index.native.tsx b/src/components/withWindowDimensions/index.native.tsx index 8ba385f72e4b..e1300a5584f5 100644 --- a/src/components/withWindowDimensions/index.native.tsx +++ b/src/components/withWindowDimensions/index.native.tsx @@ -1,12 +1,13 @@ import PropTypes from 'prop-types'; -import React, {ComponentType, createContext, ForwardedRef, RefAttributes, useEffect, useMemo, useState} from 'react'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { createContext, useEffect, useMemo, useState} from 'react'; import {Dimensions} from 'react-native'; import useSafeAreaInsets from '@hooks/useSafeAreaInsets'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import getWindowHeightAdjustment from '@libs/getWindowHeightAdjustment'; import variables from '@styles/variables'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; -import {NewDimensions, WindowDimensionsContextData, WindowDimensionsProps} from './types'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {NewDimensions, WindowDimensionsContextData, WindowDimensionsProps} from './types'; const WindowDimensionsContext = createContext(null); const windowDimensionsPropTypes = { diff --git a/src/components/withWindowDimensions/index.tsx b/src/components/withWindowDimensions/index.tsx index aa9fc2181a36..e761881a1788 100644 --- a/src/components/withWindowDimensions/index.tsx +++ b/src/components/withWindowDimensions/index.tsx @@ -1,13 +1,14 @@ import lodashDebounce from 'lodash/debounce'; import PropTypes from 'prop-types'; -import React, {ComponentType, createContext, ForwardedRef, RefAttributes, useEffect, useMemo, useState} from 'react'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { createContext, useEffect, useMemo, useState} from 'react'; import {Dimensions} from 'react-native'; import useSafeAreaInsets from '@hooks/useSafeAreaInsets'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import getWindowHeightAdjustment from '@libs/getWindowHeightAdjustment'; import variables from '@styles/variables'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; -import {NewDimensions, WindowDimensionsContextData, WindowDimensionsProps} from './types'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {NewDimensions, WindowDimensionsContextData, WindowDimensionsProps} from './types'; const WindowDimensionsContext = createContext(null); const windowDimensionsPropTypes = { diff --git a/src/components/withWindowDimensions/types.ts b/src/components/withWindowDimensions/types.ts index 514c86616b87..da06bb6a886e 100644 --- a/src/components/withWindowDimensions/types.ts +++ b/src/components/withWindowDimensions/types.ts @@ -1,4 +1,4 @@ -import {ScaledSize} from 'react-native'; +import type {ScaledSize} from 'react-native'; type WindowDimensionsContextData = { windowHeight: number; diff --git a/src/hooks/useActiveElement/index.native.ts b/src/hooks/useActiveElement/index.native.ts index 22e1ed7e0041..8683684f8167 100644 --- a/src/hooks/useActiveElement/index.native.ts +++ b/src/hooks/useActiveElement/index.native.ts @@ -1,4 +1,4 @@ -import UseActiveElement from './types'; +import type UseActiveElement from './types'; /** * Native doesn't have the DOM, so we just return null. diff --git a/src/hooks/useActiveElement/index.ts b/src/hooks/useActiveElement/index.ts index bee0dde6b427..6026b4f5eb80 100644 --- a/src/hooks/useActiveElement/index.ts +++ b/src/hooks/useActiveElement/index.ts @@ -1,5 +1,5 @@ import {useEffect, useState} from 'react'; -import UseActiveElement from './types'; +import type UseActiveElement from './types'; /** * Listens for the focusin and focusout events and sets the DOM activeElement to the state. diff --git a/src/hooks/useAppFocusEvent/index.native.ts b/src/hooks/useAppFocusEvent/index.native.ts index e7df6fb8054b..f2ef1e7f4321 100644 --- a/src/hooks/useAppFocusEvent/index.native.ts +++ b/src/hooks/useAppFocusEvent/index.native.ts @@ -1,6 +1,6 @@ import {useEffect} from 'react'; import {AppState} from 'react-native'; -import {UseAppFocusEvent, UseAppFocusEventCallback} from './types'; +import type {UseAppFocusEvent, UseAppFocusEventCallback} from './types'; const useAppFocusEvent: UseAppFocusEvent = (callback: UseAppFocusEventCallback) => { useEffect(() => { diff --git a/src/hooks/useAppFocusEvent/index.ts b/src/hooks/useAppFocusEvent/index.ts index d4b6772733f8..96038c98bfe6 100644 --- a/src/hooks/useAppFocusEvent/index.ts +++ b/src/hooks/useAppFocusEvent/index.ts @@ -1,5 +1,5 @@ import {useEffect} from 'react'; -import {UseAppFocusEvent, UseAppFocusEventCallback} from './types'; +import type {UseAppFocusEvent, UseAppFocusEventCallback} from './types'; /** * Runs the given callback when the app is focused (eg: after re-opening the app, switching tabs, or focusing the window) diff --git a/src/hooks/useAutoFocusInput.ts b/src/hooks/useAutoFocusInput.ts index ad66a01b157d..96e60489afc9 100644 --- a/src/hooks/useAutoFocusInput.ts +++ b/src/hooks/useAutoFocusInput.ts @@ -1,6 +1,7 @@ import {useFocusEffect} from '@react-navigation/native'; import {useCallback, useContext, useEffect, useRef, useState} from 'react'; -import {InteractionManager, TextInput} from 'react-native'; +import type { TextInput} from 'react-native'; +import {InteractionManager} from 'react-native'; import CONST from '@src/CONST'; import * as Expensify from '@src/Expensify'; diff --git a/src/hooks/useCurrentReportID.tsx b/src/hooks/useCurrentReportID.tsx index 8514a474706b..11ad4caabb88 100644 --- a/src/hooks/useCurrentReportID.tsx +++ b/src/hooks/useCurrentReportID.tsx @@ -1,5 +1,6 @@ import {useContext} from 'react'; -import {CurrentReportIDContext, CurrentReportIDContextValue} from '@components/withCurrentReportID'; +import type { CurrentReportIDContextValue} from '@components/withCurrentReportID'; +import {CurrentReportIDContext} from '@components/withCurrentReportID'; export default function useCurrentReportID(): CurrentReportIDContextValue | null { return useContext(CurrentReportIDContext); diff --git a/src/hooks/useDebounce.ts b/src/hooks/useDebounce.ts index 7fc8332ba6cc..c3d6c22abf86 100644 --- a/src/hooks/useDebounce.ts +++ b/src/hooks/useDebounce.ts @@ -1,4 +1,4 @@ -import {DebouncedFunc, DebounceSettings} from 'lodash'; +import type {DebouncedFunc, DebounceSettings} from 'lodash'; import lodashDebounce from 'lodash/debounce'; import {useCallback, useEffect, useRef} from 'react'; diff --git a/src/hooks/useDefaultDragAndDrop/index.native.ts b/src/hooks/useDefaultDragAndDrop/index.native.ts index 08b2606d984d..e571e9d0d2b7 100644 --- a/src/hooks/useDefaultDragAndDrop/index.native.ts +++ b/src/hooks/useDefaultDragAndDrop/index.native.ts @@ -1,4 +1,4 @@ -import UseDefaultDragAndDrop from './types'; +import type UseDefaultDragAndDrop from './types'; const useDefaultDragAndDrop: UseDefaultDragAndDrop = () => {}; diff --git a/src/hooks/useDefaultDragAndDrop/index.ts b/src/hooks/useDefaultDragAndDrop/index.ts index 033110c143c8..7800e8fe349b 100644 --- a/src/hooks/useDefaultDragAndDrop/index.ts +++ b/src/hooks/useDefaultDragAndDrop/index.ts @@ -1,5 +1,5 @@ import {useEffect} from 'react'; -import UseDefaultDragAndDrop from './types'; +import type UseDefaultDragAndDrop from './types'; const useDefaultDragAndDrop: UseDefaultDragAndDrop = () => { useEffect(() => { diff --git a/src/hooks/useDelayedInputFocus.ts b/src/hooks/useDelayedInputFocus.ts index d062f8a03d25..4942de265340 100644 --- a/src/hooks/useDelayedInputFocus.ts +++ b/src/hooks/useDelayedInputFocus.ts @@ -1,6 +1,7 @@ import {useFocusEffect} from '@react-navigation/native'; -import {MutableRefObject, useCallback, useRef} from 'react'; -import {TextInput} from 'react-native'; +import type {MutableRefObject} from 'react'; +import { useCallback, useRef} from 'react'; +import type {TextInput} from 'react-native'; import CONST from '@src/CONST'; /** diff --git a/src/hooks/useDragAndDrop.ts b/src/hooks/useDragAndDrop.ts index 21f48921c187..8c9054dc0bf1 100644 --- a/src/hooks/useDragAndDrop.ts +++ b/src/hooks/useDragAndDrop.ts @@ -1,6 +1,7 @@ import {useIsFocused} from '@react-navigation/native'; -import React, {useCallback, useContext, useEffect, useState} from 'react'; -import {View} from 'react-native'; +import type React from 'react'; +import {useCallback, useContext, useEffect, useState} from 'react'; +import type {View} from 'react-native'; import {PopoverContext} from '@components/PopoverProvider'; const COPY_DROP_EFFECT = 'copy'; diff --git a/src/hooks/useFlipper/index.native.ts b/src/hooks/useFlipper/index.native.ts index df1aa3bf513b..0591eec50acc 100644 --- a/src/hooks/useFlipper/index.native.ts +++ b/src/hooks/useFlipper/index.native.ts @@ -1,5 +1,5 @@ import {useFlipper as useFlipperRN} from '@react-navigation/devtools'; -import UseFlipper from './types'; +import type UseFlipper from './types'; const useFlipper: UseFlipper = useFlipperRN; diff --git a/src/hooks/useFlipper/index.ts b/src/hooks/useFlipper/index.ts index 26d4c9659ad8..871bff4a7321 100644 --- a/src/hooks/useFlipper/index.ts +++ b/src/hooks/useFlipper/index.ts @@ -1,4 +1,4 @@ -import UseFlipper from './types'; +import type UseFlipper from './types'; const useFlipper: UseFlipper = () => {}; diff --git a/src/hooks/useFlipper/types.ts b/src/hooks/useFlipper/types.ts index a995414e5dd1..e69272fcb92c 100644 --- a/src/hooks/useFlipper/types.ts +++ b/src/hooks/useFlipper/types.ts @@ -1,5 +1,5 @@ -import {NavigationContainerRefWithCurrent} from '@react-navigation/core'; -import {RootStackParamList} from '@libs/Navigation/types'; +import type {NavigationContainerRefWithCurrent} from '@react-navigation/core'; +import type {RootStackParamList} from '@libs/Navigation/types'; type UseFlipper = (ref: NavigationContainerRefWithCurrent) => void; diff --git a/src/hooks/useInitialWindowDimensions/index.ts b/src/hooks/useInitialWindowDimensions/index.ts index e0882e820e9b..f86829f8ac81 100644 --- a/src/hooks/useInitialWindowDimensions/index.ts +++ b/src/hooks/useInitialWindowDimensions/index.ts @@ -1,6 +1,7 @@ // eslint-disable-next-line no-restricted-imports import {useEffect, useState} from 'react'; -import {Dimensions, type ScaledSize} from 'react-native'; +import {Dimensions } from 'react-native'; +import type {ScaledSize} from 'react-native'; type InitialWindowDimensions = { initialWidth: number; diff --git a/src/hooks/useKeyboardShortcut.ts b/src/hooks/useKeyboardShortcut.ts index 461f01a74837..6bf8b2c52bc3 100644 --- a/src/hooks/useKeyboardShortcut.ts +++ b/src/hooks/useKeyboardShortcut.ts @@ -1,6 +1,6 @@ import {useEffect} from 'react'; -import {GestureResponderEvent} from 'react-native'; -import {ValueOf} from 'type-fest'; +import type {GestureResponderEvent} from 'react-native'; +import type {ValueOf} from 'type-fest'; import KeyboardShortcut from '@libs/KeyboardShortcut'; import CONST from '@src/CONST'; diff --git a/src/hooks/useKeyboardState.ts b/src/hooks/useKeyboardState.ts index edcbaa32cc9e..6c312d448af8 100644 --- a/src/hooks/useKeyboardState.ts +++ b/src/hooks/useKeyboardState.ts @@ -1,5 +1,6 @@ import {useContext} from 'react'; -import {KeyboardStateContext, KeyboardStateContextValue} from '@components/withKeyboardState'; +import type { KeyboardStateContextValue} from '@components/withKeyboardState'; +import {KeyboardStateContext} from '@components/withKeyboardState'; /** * Hook for getting current state of keyboard diff --git a/src/hooks/useLocalize.ts b/src/hooks/useLocalize.ts index 2875577ef00f..dd68b9e8df05 100644 --- a/src/hooks/useLocalize.ts +++ b/src/hooks/useLocalize.ts @@ -1,5 +1,6 @@ import {useContext} from 'react'; -import {LocaleContext, LocaleContextProps} from '@components/LocaleContextProvider'; +import type { LocaleContextProps} from '@components/LocaleContextProvider'; +import {LocaleContext} from '@components/LocaleContextProvider'; export default function useLocalize(): LocaleContextProps { return useContext(LocaleContext); diff --git a/src/hooks/useReportScrollManager/index.native.ts b/src/hooks/useReportScrollManager/index.native.ts index 24de5d8da63a..6666a4ebd0f2 100644 --- a/src/hooks/useReportScrollManager/index.native.ts +++ b/src/hooks/useReportScrollManager/index.native.ts @@ -1,6 +1,6 @@ import {useCallback, useContext} from 'react'; import {ActionListContext} from '@pages/home/ReportScreenContext'; -import ReportScrollManagerData from './types'; +import type ReportScrollManagerData from './types'; function useReportScrollManager(): ReportScrollManagerData { const {flatListRef, setScrollPosition} = useContext(ActionListContext); diff --git a/src/hooks/useReportScrollManager/index.ts b/src/hooks/useReportScrollManager/index.ts index 032417ed9fde..8b56cd639d08 100644 --- a/src/hooks/useReportScrollManager/index.ts +++ b/src/hooks/useReportScrollManager/index.ts @@ -1,6 +1,6 @@ import {useCallback, useContext} from 'react'; import {ActionListContext} from '@pages/home/ReportScreenContext'; -import ReportScrollManagerData from './types'; +import type ReportScrollManagerData from './types'; function useReportScrollManager(): ReportScrollManagerData { const {flatListRef} = useContext(ActionListContext); diff --git a/src/hooks/useReportScrollManager/types.ts b/src/hooks/useReportScrollManager/types.ts index a0d7f14f7b84..5182f7269a9c 100644 --- a/src/hooks/useReportScrollManager/types.ts +++ b/src/hooks/useReportScrollManager/types.ts @@ -1,4 +1,4 @@ -import {FlatListRefType} from '@pages/home/ReportScreenContext'; +import type {FlatListRefType} from '@pages/home/ReportScreenContext'; type ReportScrollManagerData = { ref: FlatListRefType; diff --git a/src/hooks/useResponsiveLayout.ts b/src/hooks/useResponsiveLayout.ts index b386fc985604..55b3bd0b4af9 100644 --- a/src/hooks/useResponsiveLayout.ts +++ b/src/hooks/useResponsiveLayout.ts @@ -1,4 +1,5 @@ -import {ParamListBase, RouteProp, useRoute} from '@react-navigation/native'; +import type {ParamListBase, RouteProp} from '@react-navigation/native'; +import { useRoute} from '@react-navigation/native'; import useWindowDimensions from './useWindowDimensions'; type RouteParams = ParamListBase & { diff --git a/src/hooks/useSafeAreaInsets/index.android.ts b/src/hooks/useSafeAreaInsets/index.android.ts index 55a83d425543..6c6af7cc442b 100644 --- a/src/hooks/useSafeAreaInsets/index.android.ts +++ b/src/hooks/useSafeAreaInsets/index.android.ts @@ -1,5 +1,6 @@ // eslint-disable-next-line no-restricted-imports -import {EdgeInsets, useSafeAreaInsets as useSafeAreaInsetsInternal} from 'react-native-safe-area-context'; +import type {EdgeInsets} from 'react-native-safe-area-context'; +import { useSafeAreaInsets as useSafeAreaInsetsInternal} from 'react-native-safe-area-context'; import StatusBar from '@libs/StatusBar'; function useSafeAreaInsets(): EdgeInsets { diff --git a/src/hooks/useScrollContext.ts b/src/hooks/useScrollContext.ts index 711c8326bdff..bdaaf298c1e2 100644 --- a/src/hooks/useScrollContext.ts +++ b/src/hooks/useScrollContext.ts @@ -1,5 +1,6 @@ import {useContext} from 'react'; -import {ScrollContext, ScrollContextValue} from '@components/ScrollViewWithContext'; +import type { ScrollContextValue} from '@components/ScrollViewWithContext'; +import {ScrollContext} from '@components/ScrollViewWithContext'; export default function useScrollContext(): ScrollContextValue { return useContext(ScrollContext); diff --git a/src/hooks/useTabNavigatorFocus/index.ts b/src/hooks/useTabNavigatorFocus/index.ts index 9138cbbdab48..7c721717769e 100644 --- a/src/hooks/useTabNavigatorFocus/index.ts +++ b/src/hooks/useTabNavigatorFocus/index.ts @@ -1,7 +1,7 @@ import {useTabAnimation} from '@react-navigation/material-top-tabs'; import {useIsFocused} from '@react-navigation/native'; import {useEffect, useState} from 'react'; -import {Animated} from 'react-native'; +import type {Animated} from 'react-native'; import DomUtils from '@libs/DomUtils'; type UseTabNavigatorFocusParams = { diff --git a/src/hooks/useTheme.ts b/src/hooks/useTheme.ts index 966e9b499e2f..7ba813145ebb 100644 --- a/src/hooks/useTheme.ts +++ b/src/hooks/useTheme.ts @@ -1,6 +1,6 @@ import {useContext} from 'react'; import ThemeContext from '@styles/theme/context/ThemeContext'; -import {type ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; function useTheme(): ThemeColors { const theme = useContext(ThemeContext); diff --git a/src/hooks/useThemePreference.ts b/src/hooks/useThemePreference.ts index 5d3ec4c3a860..ca585065c4e6 100644 --- a/src/hooks/useThemePreference.ts +++ b/src/hooks/useThemePreference.ts @@ -1,7 +1,7 @@ import {useContext, useEffect, useState} from 'react'; import {useColorScheme} from 'react-native'; import {PreferredThemeContext} from '@components/OnyxProvider'; -import {ThemePreferenceWithoutSystem} from '@styles/theme/types'; +import type {ThemePreferenceWithoutSystem} from '@styles/theme/types'; import CONST from '@src/CONST'; function useThemePreference() { diff --git a/src/hooks/useThemePreferenceWithStaticOverride.ts b/src/hooks/useThemePreferenceWithStaticOverride.ts index 4619da1966ce..96e4db61e24f 100644 --- a/src/hooks/useThemePreferenceWithStaticOverride.ts +++ b/src/hooks/useThemePreferenceWithStaticOverride.ts @@ -1,4 +1,4 @@ -import {ThemePreferenceWithoutSystem} from '@styles/theme/types'; +import type {ThemePreferenceWithoutSystem} from '@styles/theme/types'; import useThemePreference from './useThemePreference'; const useThemePreferenceWithStaticOverride = (staticThemePreference: ThemePreferenceWithoutSystem | undefined) => { diff --git a/src/hooks/useViolations.ts b/src/hooks/useViolations.ts index 3aef5cd9b716..0f43abdff6e2 100644 --- a/src/hooks/useViolations.ts +++ b/src/hooks/useViolations.ts @@ -1,5 +1,5 @@ import {useCallback, useMemo} from 'react'; -import {TransactionViolation, ViolationName} from '@src/types/onyx'; +import type {TransactionViolation, ViolationName} from '@src/types/onyx'; /** * Names of Fields where violations can occur diff --git a/src/hooks/useWindowDimensions/index.native.ts b/src/hooks/useWindowDimensions/index.native.ts index e0268445fe4e..5d556234aeb9 100644 --- a/src/hooks/useWindowDimensions/index.native.ts +++ b/src/hooks/useWindowDimensions/index.native.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line no-restricted-imports import {useWindowDimensions} from 'react-native'; import variables from '@styles/variables'; -import WindowDimensions from './types'; +import type WindowDimensions from './types'; /** * A convenience wrapper around React Native's useWindowDimensions hook that also provides booleans for our breakpoints. diff --git a/src/hooks/useWindowDimensions/index.ts b/src/hooks/useWindowDimensions/index.ts index ab856bcf8e1b..b0a29e9f901b 100644 --- a/src/hooks/useWindowDimensions/index.ts +++ b/src/hooks/useWindowDimensions/index.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line no-restricted-imports import {Dimensions, useWindowDimensions} from 'react-native'; import variables from '@styles/variables'; -import WindowDimensions from './types'; +import type WindowDimensions from './types'; /** * A convenience wrapper around React Native's useWindowDimensions hook that also provides booleans for our breakpoints. diff --git a/src/languages/types.ts b/src/languages/types.ts index 427a5777b2ea..dd2d339858b0 100644 --- a/src/languages/types.ts +++ b/src/languages/types.ts @@ -1,5 +1,5 @@ -import {ReportAction} from '@src/types/onyx'; -import en from './en'; +import type {ReportAction} from '@src/types/onyx'; +import type en from './en'; type AddressLineParams = { lineNumber: number; diff --git a/src/libs/API.ts b/src/libs/API.ts index 91cf6a7db877..d5cfd56cd4af 100644 --- a/src/libs/API.ts +++ b/src/libs/API.ts @@ -1,8 +1,9 @@ -import Onyx, {OnyxUpdate} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; -import OnyxRequest from '@src/types/onyx/Request'; -import Response from '@src/types/onyx/Response'; +import type OnyxRequest from '@src/types/onyx/Request'; +import type Response from '@src/types/onyx/Response'; import pkg from '../../package.json'; import Log from './Log'; import * as Middleware from './Middleware'; diff --git a/src/libs/Accessibility/index.ts b/src/libs/Accessibility/index.ts index aa167b1239b2..a803e5cc36f7 100644 --- a/src/libs/Accessibility/index.ts +++ b/src/libs/Accessibility/index.ts @@ -1,5 +1,6 @@ import {useCallback, useEffect, useState} from 'react'; -import {AccessibilityInfo, LayoutChangeEvent} from 'react-native'; +import type { LayoutChangeEvent} from 'react-native'; +import {AccessibilityInfo} from 'react-native'; import moveAccessibilityFocus from './moveAccessibilityFocus'; type HitSlop = {x: number; y: number}; diff --git a/src/libs/Accessibility/moveAccessibilityFocus/index.native.ts b/src/libs/Accessibility/moveAccessibilityFocus/index.native.ts index 2e027c59be39..71c249cf1d10 100644 --- a/src/libs/Accessibility/moveAccessibilityFocus/index.native.ts +++ b/src/libs/Accessibility/moveAccessibilityFocus/index.native.ts @@ -1,5 +1,5 @@ import {AccessibilityInfo} from 'react-native'; -import MoveAccessibilityFocus from './types'; +import type MoveAccessibilityFocus from './types'; const moveAccessibilityFocus: MoveAccessibilityFocus = (ref) => { if (!ref) { diff --git a/src/libs/Accessibility/moveAccessibilityFocus/index.ts b/src/libs/Accessibility/moveAccessibilityFocus/index.ts index b381c1d814c1..cafe1a216db3 100644 --- a/src/libs/Accessibility/moveAccessibilityFocus/index.ts +++ b/src/libs/Accessibility/moveAccessibilityFocus/index.ts @@ -1,4 +1,4 @@ -import MoveAccessibilityFocus from './types'; +import type MoveAccessibilityFocus from './types'; const moveAccessibilityFocus: MoveAccessibilityFocus = (ref) => { if (!ref?.current) { diff --git a/src/libs/Accessibility/moveAccessibilityFocus/types.ts b/src/libs/Accessibility/moveAccessibilityFocus/types.ts index 1344c3f98e3e..6756bdd6f773 100644 --- a/src/libs/Accessibility/moveAccessibilityFocus/types.ts +++ b/src/libs/Accessibility/moveAccessibilityFocus/types.ts @@ -1,5 +1,5 @@ -import {ElementRef, RefObject} from 'react'; -import {HostComponent} from 'react-native'; +import type {ElementRef, RefObject} from 'react'; +import type {HostComponent} from 'react-native'; type MoveAccessibilityFocus = (ref?: ElementRef> & RefObject) => void; diff --git a/src/libs/ActiveClientManager/index.native.ts b/src/libs/ActiveClientManager/index.native.ts index 866992bcc841..7de57a10e5f1 100644 --- a/src/libs/ActiveClientManager/index.native.ts +++ b/src/libs/ActiveClientManager/index.native.ts @@ -2,7 +2,7 @@ * For native devices, there will never be more than one * client running at a time, so this lib is a big no-op */ -import {Init, IsClientTheLeader, IsReady} from './types'; +import type {Init, IsClientTheLeader, IsReady} from './types'; const init: Init = () => {}; diff --git a/src/libs/ActiveClientManager/index.ts b/src/libs/ActiveClientManager/index.ts index 0baeb2becfce..e703ce0458f4 100644 --- a/src/libs/ActiveClientManager/index.ts +++ b/src/libs/ActiveClientManager/index.ts @@ -7,7 +7,7 @@ import Str from 'expensify-common/lib/str'; import Onyx from 'react-native-onyx'; import * as ActiveClients from '@userActions/ActiveClients'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Init, IsClientTheLeader, IsReady} from './types'; +import type {Init, IsClientTheLeader, IsReady} from './types'; const clientID = Str.guid(); const maxClients = 20; diff --git a/src/libs/ApiUtils.ts b/src/libs/ApiUtils.ts index 3d7347136897..67feb18b36fa 100644 --- a/src/libs/ApiUtils.ts +++ b/src/libs/ApiUtils.ts @@ -1,9 +1,9 @@ import Onyx from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Request} from '@src/types/onyx'; +import type {Request} from '@src/types/onyx'; import proxyConfig from '../../config/proxyConfig'; import * as Environment from './Environment/Environment'; diff --git a/src/libs/AppStateMonitor/index.ts b/src/libs/AppStateMonitor/index.ts index f95fad042b98..cd9deb7797cb 100644 --- a/src/libs/AppStateMonitor/index.ts +++ b/src/libs/AppStateMonitor/index.ts @@ -1,4 +1,5 @@ -import {AppState, AppStateStatus} from 'react-native'; +import type { AppStateStatus} from 'react-native'; +import {AppState} from 'react-native'; import CONST from '@src/CONST'; import shouldReportActivity from './shouldReportActivity'; diff --git a/src/libs/AppStateMonitor/shouldReportActivity/index.native.ts b/src/libs/AppStateMonitor/shouldReportActivity/index.native.ts index 0e5fdb57a597..36d14308eac7 100644 --- a/src/libs/AppStateMonitor/shouldReportActivity/index.native.ts +++ b/src/libs/AppStateMonitor/shouldReportActivity/index.native.ts @@ -1,4 +1,4 @@ -import ShouldReportActivity from './types'; +import type ShouldReportActivity from './types'; const shouldReportActivity: ShouldReportActivity = true; diff --git a/src/libs/AppStateMonitor/shouldReportActivity/index.ts b/src/libs/AppStateMonitor/shouldReportActivity/index.ts index db326345714e..50704e7b0c80 100644 --- a/src/libs/AppStateMonitor/shouldReportActivity/index.ts +++ b/src/libs/AppStateMonitor/shouldReportActivity/index.ts @@ -1,4 +1,4 @@ -import ShouldReportActivity from './types'; +import type ShouldReportActivity from './types'; // We only need to report when the app becomes active on native since web maintains most of it's network functions while // in the "background" and the concept is not quite the same on mobile. We avoid setting this to true for web since diff --git a/src/libs/Authentication.ts b/src/libs/Authentication.ts index 9962fa55b0af..dd1003591701 100644 --- a/src/libs/Authentication.ts +++ b/src/libs/Authentication.ts @@ -1,6 +1,6 @@ import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; -import Response from '@src/types/onyx/Response'; +import type Response from '@src/types/onyx/Response'; import updateSessionAuthTokens from './actions/Session/updateSessionAuthTokens'; import redirectToSignIn from './actions/SignInRedirect'; import * as ErrorUtils from './ErrorUtils'; diff --git a/src/libs/BootSplash/index.ts b/src/libs/BootSplash/index.ts index 605e65a21a7b..644403d6abc9 100644 --- a/src/libs/BootSplash/index.ts +++ b/src/libs/BootSplash/index.ts @@ -1,5 +1,5 @@ import Log from '@libs/Log'; -import {VisibilityStatus} from './types'; +import type {VisibilityStatus} from './types'; function resolveAfter(delay: number): Promise { return new Promise((resolve) => setTimeout(resolve, delay)); diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts index 9b2bd2616e8e..91f860beb761 100644 --- a/src/libs/CardUtils.ts +++ b/src/libs/CardUtils.ts @@ -1,9 +1,10 @@ import lodash from 'lodash'; import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; -import ONYXKEYS, {OnyxValues} from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; -import {Card} from '@src/types/onyx'; +import type {OnyxValues} from '@src/ONYXKEYS'; +import ONYXKEYS from '@src/ONYXKEYS'; +import type * as OnyxTypes from '@src/types/onyx'; +import type {Card} from '@src/types/onyx'; import * as Localize from './Localize'; let allCards: OnyxValues[typeof ONYXKEYS.CARD_LIST] = {}; diff --git a/src/libs/Clipboard/index.native.ts b/src/libs/Clipboard/index.native.ts index f78c5e4ab230..2c345327a106 100644 --- a/src/libs/Clipboard/index.native.ts +++ b/src/libs/Clipboard/index.native.ts @@ -1,5 +1,5 @@ import Clipboard from '@react-native-clipboard/clipboard'; -import {CanSetHtml, SetHtml, SetString} from './types'; +import type {CanSetHtml, SetHtml, SetString} from './types'; /** * Sets a string on the Clipboard object via @react-native-clipboard/clipboard diff --git a/src/libs/Clipboard/index.ts b/src/libs/Clipboard/index.ts index b703b0b4d7f5..512eebce78e2 100644 --- a/src/libs/Clipboard/index.ts +++ b/src/libs/Clipboard/index.ts @@ -1,7 +1,7 @@ import Clipboard from '@react-native-clipboard/clipboard'; import * as Browser from '@libs/Browser'; import CONST from '@src/CONST'; -import {CanSetHtml, SetHtml, SetString} from './types'; +import type {CanSetHtml, SetHtml, SetString} from './types'; type ComposerSelection = { start: number; diff --git a/src/libs/CollectionUtils.ts b/src/libs/CollectionUtils.ts index 3a980906d614..9d0ff5425da2 100644 --- a/src/libs/CollectionUtils.ts +++ b/src/libs/CollectionUtils.ts @@ -1,4 +1,4 @@ -import {OnyxCollectionKey} from '@src/ONYXKEYS'; +import type {OnyxCollectionKey} from '@src/ONYXKEYS'; /** * Return the highest item in a numbered collection diff --git a/src/libs/ComponentUtils/index.native.ts b/src/libs/ComponentUtils/index.native.ts index 096d1449d0e1..5ad39162e1a0 100644 --- a/src/libs/ComponentUtils/index.native.ts +++ b/src/libs/ComponentUtils/index.native.ts @@ -1,4 +1,4 @@ -import {AccessibilityRoleForm, NewPasswordAutocompleteType, PasswordAutocompleteType} from './types'; +import type {AccessibilityRoleForm, NewPasswordAutocompleteType, PasswordAutocompleteType} from './types'; const PASSWORD_AUTOCOMPLETE_TYPE: PasswordAutocompleteType = 'password'; const NEW_PASSWORD_AUTOCOMPLETE_TYPE: NewPasswordAutocompleteType = 'password-new'; diff --git a/src/libs/ComponentUtils/index.ts b/src/libs/ComponentUtils/index.ts index ff8df480aa2c..38abb98594da 100644 --- a/src/libs/ComponentUtils/index.ts +++ b/src/libs/ComponentUtils/index.ts @@ -1,4 +1,4 @@ -import {AccessibilityRoleForm, NewPasswordAutocompleteType, PasswordAutocompleteType} from './types'; +import type {AccessibilityRoleForm, NewPasswordAutocompleteType, PasswordAutocompleteType} from './types'; /** * Web password field needs `current-password` as autocomplete type which is not supported on native diff --git a/src/libs/ComposerUtils/getDraftComment.ts b/src/libs/ComposerUtils/getDraftComment.ts index 97567a42b263..7f11825004a1 100644 --- a/src/libs/ComposerUtils/getDraftComment.ts +++ b/src/libs/ComposerUtils/getDraftComment.ts @@ -1,4 +1,5 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; const draftCommentMap: Record> = {}; diff --git a/src/libs/ComposerUtils/getNumberOfLines/index.native.ts b/src/libs/ComposerUtils/getNumberOfLines/index.native.ts index 9a7340b9a035..0cbfb6c7f517 100644 --- a/src/libs/ComposerUtils/getNumberOfLines/index.native.ts +++ b/src/libs/ComposerUtils/getNumberOfLines/index.native.ts @@ -1,4 +1,4 @@ -import GetNumberOfLines from './types'; +import type GetNumberOfLines from './types'; /** * Get the current number of lines in the composer diff --git a/src/libs/ComposerUtils/getNumberOfLines/index.ts b/src/libs/ComposerUtils/getNumberOfLines/index.ts index cf85b45443d5..e80744d41c69 100644 --- a/src/libs/ComposerUtils/getNumberOfLines/index.ts +++ b/src/libs/ComposerUtils/getNumberOfLines/index.ts @@ -1,4 +1,4 @@ -import GetNumberOfLines from './types'; +import type GetNumberOfLines from './types'; /** * Get the current number of lines in the composer diff --git a/src/libs/ComposerUtils/updateIsFullComposerAvailable.ts b/src/libs/ComposerUtils/updateIsFullComposerAvailable.ts index 64c526484760..580908fc3805 100644 --- a/src/libs/ComposerUtils/updateIsFullComposerAvailable.ts +++ b/src/libs/ComposerUtils/updateIsFullComposerAvailable.ts @@ -1,4 +1,4 @@ -import {ComposerProps} from '@components/Composer/types'; +import type {ComposerProps} from '@components/Composer/types'; import CONST from '@src/CONST'; /** diff --git a/src/libs/ComposerUtils/updateNumberOfLines/index.native.ts b/src/libs/ComposerUtils/updateNumberOfLines/index.native.ts index 6f87edaf2475..5a7676d8bfbd 100644 --- a/src/libs/ComposerUtils/updateNumberOfLines/index.native.ts +++ b/src/libs/ComposerUtils/updateNumberOfLines/index.native.ts @@ -1,6 +1,6 @@ import getNumberOfLines from '@libs/ComposerUtils/getNumberOfLines'; import updateIsFullComposerAvailable from '@libs/ComposerUtils/updateIsFullComposerAvailable'; -import UpdateNumberOfLines from './types'; +import type UpdateNumberOfLines from './types'; /** * Check the current scrollHeight of the textarea (minus any padding) and diff --git a/src/libs/ComposerUtils/updateNumberOfLines/index.ts b/src/libs/ComposerUtils/updateNumberOfLines/index.ts index 91a9c9c0f102..3037fb99c8b1 100644 --- a/src/libs/ComposerUtils/updateNumberOfLines/index.ts +++ b/src/libs/ComposerUtils/updateNumberOfLines/index.ts @@ -1,4 +1,4 @@ -import UpdateNumberOfLines from './types'; +import type UpdateNumberOfLines from './types'; const updateNumberOfLines: UpdateNumberOfLines = () => {}; diff --git a/src/libs/ComposerUtils/updateNumberOfLines/types.ts b/src/libs/ComposerUtils/updateNumberOfLines/types.ts index 2fe1465fa194..06daee56a707 100644 --- a/src/libs/ComposerUtils/updateNumberOfLines/types.ts +++ b/src/libs/ComposerUtils/updateNumberOfLines/types.ts @@ -1,6 +1,6 @@ -import {NativeSyntheticEvent, TextInputContentSizeChangeEventData} from 'react-native'; -import {ComposerProps} from '@components/Composer/types'; -import {type ThemeStyles} from '@styles/index'; +import type {NativeSyntheticEvent, TextInputContentSizeChangeEventData} from 'react-native'; +import type {ComposerProps} from '@components/Composer/types'; +import type {ThemeStyles} from '@styles/index'; type UpdateNumberOfLines = (props: ComposerProps, event: NativeSyntheticEvent, styles: ThemeStyles) => void; diff --git a/src/libs/ControlSelection/index.native.ts b/src/libs/ControlSelection/index.native.ts index e9a1e4e9ad5b..b45af6da6441 100644 --- a/src/libs/ControlSelection/index.native.ts +++ b/src/libs/ControlSelection/index.native.ts @@ -1,4 +1,4 @@ -import ControlSelectionModule from './types'; +import type ControlSelectionModule from './types'; function block() {} function unblock() {} diff --git a/src/libs/ControlSelection/index.ts b/src/libs/ControlSelection/index.ts index 44d4530bc4fd..ab11e66bc369 100644 --- a/src/libs/ControlSelection/index.ts +++ b/src/libs/ControlSelection/index.ts @@ -1,5 +1,5 @@ -import CustomRefObject from '@src/types/utils/CustomRefObject'; -import ControlSelectionModule from './types'; +import type CustomRefObject from '@src/types/utils/CustomRefObject'; +import type ControlSelectionModule from './types'; /** * Block selection on the whole app diff --git a/src/libs/ControlSelection/types.ts b/src/libs/ControlSelection/types.ts index d84347fd7ba6..fc0b488577ec 100644 --- a/src/libs/ControlSelection/types.ts +++ b/src/libs/ControlSelection/types.ts @@ -1,4 +1,4 @@ -import CustomRefObject from '@src/types/utils/CustomRefObject'; +import type CustomRefObject from '@src/types/utils/CustomRefObject'; type ControlSelectionModule = { block: () => void; diff --git a/src/libs/CurrencyUtils.ts b/src/libs/CurrencyUtils.ts index b8f5b434cc4a..42387e03c80b 100644 --- a/src/libs/CurrencyUtils.ts +++ b/src/libs/CurrencyUtils.ts @@ -1,6 +1,7 @@ import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; -import ONYXKEYS, {OnyxValues} from '@src/ONYXKEYS'; +import type {OnyxValues} from '@src/ONYXKEYS'; +import ONYXKEYS from '@src/ONYXKEYS'; import * as Localize from './Localize'; import BaseLocaleListener from './Localize/LocaleListener/BaseLocaleListener'; import * as NumberFormatUtils from './NumberFormatUtils'; diff --git a/src/libs/DateUtils.ts b/src/libs/DateUtils.ts index 4bd717eba6c0..08f61a50b645 100644 --- a/src/libs/DateUtils.ts +++ b/src/libs/DateUtils.ts @@ -27,10 +27,10 @@ import {formatInTimeZone, format as tzFormat, utcToZonedTime, zonedTimeToUtc} fr import {enGB, es} from 'date-fns/locale'; import throttle from 'lodash/throttle'; import Onyx from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {SelectedTimezone, Timezone} from '@src/types/onyx/PersonalDetails'; +import type {SelectedTimezone, Timezone} from '@src/types/onyx/PersonalDetails'; import * as CurrentDate from './actions/CurrentDate'; import * as Localize from './Localize'; import Log from './Log'; diff --git a/src/libs/DeviceCapabilities/canUseTouchScreen/index.native.ts b/src/libs/DeviceCapabilities/canUseTouchScreen/index.native.ts index 60980801e73c..d8d04a8cbeb7 100644 --- a/src/libs/DeviceCapabilities/canUseTouchScreen/index.native.ts +++ b/src/libs/DeviceCapabilities/canUseTouchScreen/index.native.ts @@ -1,4 +1,4 @@ -import CanUseTouchScreen from './types'; +import type CanUseTouchScreen from './types'; const canUseTouchScreen: CanUseTouchScreen = () => true; diff --git a/src/libs/DeviceCapabilities/canUseTouchScreen/index.ts b/src/libs/DeviceCapabilities/canUseTouchScreen/index.ts index 9e21f5a42b5d..34a1fc532e9e 100644 --- a/src/libs/DeviceCapabilities/canUseTouchScreen/index.ts +++ b/src/libs/DeviceCapabilities/canUseTouchScreen/index.ts @@ -1,5 +1,5 @@ -import {Merge} from 'type-fest'; -import CanUseTouchScreen from './types'; +import type {Merge} from 'type-fest'; +import type CanUseTouchScreen from './types'; type ExtendedNavigator = Merge; diff --git a/src/libs/DeviceCapabilities/hasHoverSupport/index.native.ts b/src/libs/DeviceCapabilities/hasHoverSupport/index.native.ts index 097b3b0cbba1..31277f753923 100644 --- a/src/libs/DeviceCapabilities/hasHoverSupport/index.native.ts +++ b/src/libs/DeviceCapabilities/hasHoverSupport/index.native.ts @@ -1,4 +1,4 @@ -import HasHoverSupport from './types'; +import type HasHoverSupport from './types'; /** * Allows us to identify whether the platform is hoverable. diff --git a/src/libs/DeviceCapabilities/hasHoverSupport/index.ts b/src/libs/DeviceCapabilities/hasHoverSupport/index.ts index 1ff0f461db69..4915c7786532 100644 --- a/src/libs/DeviceCapabilities/hasHoverSupport/index.ts +++ b/src/libs/DeviceCapabilities/hasHoverSupport/index.ts @@ -1,4 +1,4 @@ -import HasHoverSupport from './types'; +import type HasHoverSupport from './types'; /** * Allows us to identify whether the platform is hoverable. diff --git a/src/libs/DeviceCapabilities/hasPassiveEventListenerSupport/index.native.ts b/src/libs/DeviceCapabilities/hasPassiveEventListenerSupport/index.native.ts index a5e57675fcf5..f32cff6b365d 100644 --- a/src/libs/DeviceCapabilities/hasPassiveEventListenerSupport/index.native.ts +++ b/src/libs/DeviceCapabilities/hasPassiveEventListenerSupport/index.native.ts @@ -1,4 +1,4 @@ -import HasPassiveEventListenerSupport from './types'; +import type HasPassiveEventListenerSupport from './types'; /** * Allows us to identify whether the browser supports passive event listener. diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 477bfb4b61f9..790a9b1e37cd 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -1,7 +1,8 @@ -import {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; import type {LocaleContextProps} from '@components/LocaleContextProvider'; import CONST from '@src/CONST'; -import Policy, {Unit} from '@src/types/onyx/Policy'; +import type {Unit} from '@src/types/onyx/Policy'; +import type Policy from '@src/types/onyx/Policy'; import * as CurrencyUtils from './CurrencyUtils'; import * as PolicyUtils from './PolicyUtils'; diff --git a/src/libs/DomUtils/index.native.ts b/src/libs/DomUtils/index.native.ts index 0864f1a16ac0..7117f5942f9a 100644 --- a/src/libs/DomUtils/index.native.ts +++ b/src/libs/DomUtils/index.native.ts @@ -1,4 +1,4 @@ -import GetActiveElement from './types'; +import type GetActiveElement from './types'; const getActiveElement: GetActiveElement = () => null; diff --git a/src/libs/DomUtils/index.ts b/src/libs/DomUtils/index.ts index 6a2eed57fbe6..068eb0c9fe7e 100644 --- a/src/libs/DomUtils/index.ts +++ b/src/libs/DomUtils/index.ts @@ -1,4 +1,4 @@ -import GetActiveElement from './types'; +import type GetActiveElement from './types'; const getActiveElement: GetActiveElement = () => document.activeElement; diff --git a/src/libs/E2E/API.mock.ts b/src/libs/E2E/API.mock.ts index 0568de926024..83b7cb218977 100644 --- a/src/libs/E2E/API.mock.ts +++ b/src/libs/E2E/API.mock.ts @@ -1,6 +1,6 @@ import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; -import Response from '@src/types/onyx/Response'; +import type Response from '@src/types/onyx/Response'; // mock functions import mockAuthenticatePusher from './apiMocks/authenticatePusher'; import mockBeginSignin from './apiMocks/beginSignin'; diff --git a/src/libs/E2E/apiMocks/authenticatePusher.ts b/src/libs/E2E/apiMocks/authenticatePusher.ts index 81191ddb8222..28f9ebbbee88 100644 --- a/src/libs/E2E/apiMocks/authenticatePusher.ts +++ b/src/libs/E2E/apiMocks/authenticatePusher.ts @@ -1,4 +1,4 @@ -import Response from '@src/types/onyx/Response'; +import type Response from '@src/types/onyx/Response'; const authenticatePusher = (): Response => ({ auth: 'auth', diff --git a/src/libs/E2E/apiMocks/beginSignin.ts b/src/libs/E2E/apiMocks/beginSignin.ts index c5002f1f3dd8..a578f935c2aa 100644 --- a/src/libs/E2E/apiMocks/beginSignin.ts +++ b/src/libs/E2E/apiMocks/beginSignin.ts @@ -1,5 +1,5 @@ -import {SigninParams} from '@libs/E2E/types'; -import Response from '@src/types/onyx/Response'; +import type {SigninParams} from '@libs/E2E/types'; +import type Response from '@src/types/onyx/Response'; const beginSignin = ({email}: SigninParams): Response => ({ onyxData: [ diff --git a/src/libs/E2E/apiMocks/openApp.ts b/src/libs/E2E/apiMocks/openApp.ts index 42d13716407d..ec714d693666 100644 --- a/src/libs/E2E/apiMocks/openApp.ts +++ b/src/libs/E2E/apiMocks/openApp.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import Response from '@src/types/onyx/Response'; +import type Response from '@src/types/onyx/Response'; const openApp = (): Response => ({ onyxData: [ diff --git a/src/libs/E2E/apiMocks/openReport.ts b/src/libs/E2E/apiMocks/openReport.ts index 51d40dc896d2..49d44605592d 100644 --- a/src/libs/E2E/apiMocks/openReport.ts +++ b/src/libs/E2E/apiMocks/openReport.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import Response from '@src/types/onyx/Response'; +import type Response from '@src/types/onyx/Response'; export default (): Response => ({ onyxData: [ diff --git a/src/libs/E2E/apiMocks/readNewestAction.ts b/src/libs/E2E/apiMocks/readNewestAction.ts index 5db007e64a6f..eb3800a98b81 100644 --- a/src/libs/E2E/apiMocks/readNewestAction.ts +++ b/src/libs/E2E/apiMocks/readNewestAction.ts @@ -1,4 +1,4 @@ -import Response from '@src/types/onyx/Response'; +import type Response from '@src/types/onyx/Response'; export default (): Response => ({ jsonCode: 200, diff --git a/src/libs/E2E/apiMocks/signinUser.ts b/src/libs/E2E/apiMocks/signinUser.ts index a7d841196c48..7063e56f94be 100644 --- a/src/libs/E2E/apiMocks/signinUser.ts +++ b/src/libs/E2E/apiMocks/signinUser.ts @@ -1,5 +1,5 @@ -import {SigninParams} from '@libs/E2E/types'; -import Response from '@src/types/onyx/Response'; +import type {SigninParams} from '@libs/E2E/types'; +import type Response from '@src/types/onyx/Response'; const signinUser = ({email}: SigninParams): Response => ({ onyxData: [ diff --git a/src/libs/E2E/isE2ETestSession.native.ts b/src/libs/E2E/isE2ETestSession.native.ts index 0463d41572cf..249062289e43 100644 --- a/src/libs/E2E/isE2ETestSession.native.ts +++ b/src/libs/E2E/isE2ETestSession.native.ts @@ -1,5 +1,5 @@ import CONFIG from '@src/CONFIG'; -import {IsE2ETestSession} from './types'; +import type {IsE2ETestSession} from './types'; const isE2ETestSession: IsE2ETestSession = () => CONFIG.E2E_TESTING; diff --git a/src/libs/E2E/isE2ETestSession.ts b/src/libs/E2E/isE2ETestSession.ts index 145c4336fddf..cba31689f951 100644 --- a/src/libs/E2E/isE2ETestSession.ts +++ b/src/libs/E2E/isE2ETestSession.ts @@ -1,4 +1,4 @@ -import {IsE2ETestSession} from './types'; +import type {IsE2ETestSession} from './types'; const isE2ETestSession: IsE2ETestSession = () => false; diff --git a/src/libs/E2E/reactNativeLaunchingTest.ts b/src/libs/E2E/reactNativeLaunchingTest.ts index 0533a2ff600b..cbd63270e736 100644 --- a/src/libs/E2E/reactNativeLaunchingTest.ts +++ b/src/libs/E2E/reactNativeLaunchingTest.ts @@ -5,7 +5,7 @@ * By doing this, we avoid bundling any E2E testing code * into the actual release app. */ -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import * as Metrics from '@libs/Metrics'; import Performance from '@libs/Performance'; import E2EConfig from '../../../tests/e2e/config'; diff --git a/src/libs/E2E/tests/appStartTimeTest.e2e.ts b/src/libs/E2E/tests/appStartTimeTest.e2e.ts index 92e2513e0351..6589e594dac6 100644 --- a/src/libs/E2E/tests/appStartTimeTest.e2e.ts +++ b/src/libs/E2E/tests/appStartTimeTest.e2e.ts @@ -1,5 +1,5 @@ import Config from 'react-native-config'; -import {PerformanceEntry} from 'react-native-performance'; +import type {PerformanceEntry} from 'react-native-performance'; import E2ELogin from '@libs/E2E/actions/e2eLogin'; import E2EClient from '@libs/E2E/client'; import Performance from '@libs/Performance'; diff --git a/src/libs/EmojiTrie.ts b/src/libs/EmojiTrie.ts index 0100f279066a..4c441facdd46 100644 --- a/src/libs/EmojiTrie.ts +++ b/src/libs/EmojiTrie.ts @@ -1,6 +1,6 @@ import emojis, {localeEmojis} from '@assets/emojis'; import CONST from '@src/CONST'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; import Timing from './actions/Timing'; import Trie from './Trie'; diff --git a/src/libs/EmojiUtils.ts b/src/libs/EmojiUtils.ts index baff8ea7087f..06bbd5c871ed 100644 --- a/src/libs/EmojiUtils.ts +++ b/src/libs/EmojiUtils.ts @@ -3,13 +3,13 @@ import Str from 'expensify-common/lib/str'; import memoize from 'lodash/memoize'; import Onyx from 'react-native-onyx'; import * as Emojis from '@assets/emojis'; -import {Emoji, HeaderEmoji, PickerEmojis} from '@assets/emojis/types'; +import type {Emoji, HeaderEmoji, PickerEmojis} from '@assets/emojis/types'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {FrequentlyUsedEmoji} from '@src/types/onyx'; -import {ReportActionReaction, UsersReactions} from '@src/types/onyx/ReportActionReactions'; -import IconAsset from '@src/types/utils/IconAsset'; -import {SupportedLanguage} from './EmojiTrie'; +import type {FrequentlyUsedEmoji} from '@src/types/onyx'; +import type {ReportActionReaction, UsersReactions} from '@src/types/onyx/ReportActionReactions'; +import type IconAsset from '@src/types/utils/IconAsset'; +import type {SupportedLanguage} from './EmojiTrie'; type HeaderIndice = {code: string; index: number; icon: IconAsset}; type EmojiSpacer = {code: string; spacer: boolean}; diff --git a/src/libs/Environment/betaChecker/index.android.ts b/src/libs/Environment/betaChecker/index.android.ts index f230120ba0b1..aeb1527457f7 100644 --- a/src/libs/Environment/betaChecker/index.android.ts +++ b/src/libs/Environment/betaChecker/index.android.ts @@ -4,7 +4,7 @@ import * as AppUpdate from '@userActions/AppUpdate'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import pkg from '../../../../package.json'; -import IsBetaBuild from './types'; +import type IsBetaBuild from './types'; let isLastSavedBeta = false; Onyx.connect({ diff --git a/src/libs/Environment/betaChecker/index.ios.ts b/src/libs/Environment/betaChecker/index.ios.ts index 0d901fc4b003..dae79dabfd2b 100644 --- a/src/libs/Environment/betaChecker/index.ios.ts +++ b/src/libs/Environment/betaChecker/index.ios.ts @@ -1,5 +1,5 @@ import {NativeModules} from 'react-native'; -import IsBetaBuild from './types'; +import type IsBetaBuild from './types'; /** * Check to see if the build is staging (TestFlight) or production diff --git a/src/libs/Environment/betaChecker/index.ts b/src/libs/Environment/betaChecker/index.ts index 541a3120ccce..ce1668759c8c 100644 --- a/src/libs/Environment/betaChecker/index.ts +++ b/src/libs/Environment/betaChecker/index.ts @@ -1,4 +1,4 @@ -import IsBetaBuild from './types'; +import type IsBetaBuild from './types'; /** * There's no beta build in non native diff --git a/src/libs/Environment/getEnvironment/index.native.ts b/src/libs/Environment/getEnvironment/index.native.ts index 766f288376b5..fb3f70001aaa 100644 --- a/src/libs/Environment/getEnvironment/index.native.ts +++ b/src/libs/Environment/getEnvironment/index.native.ts @@ -1,7 +1,7 @@ import Config from 'react-native-config'; import betaChecker from '@libs/Environment/betaChecker'; import CONST from '@src/CONST'; -import Environment from './types'; +import type Environment from './types'; let environment: Environment | null = null; diff --git a/src/libs/Environment/getEnvironment/index.ts b/src/libs/Environment/getEnvironment/index.ts index 84f64e91649b..9bcefba880a4 100644 --- a/src/libs/Environment/getEnvironment/index.ts +++ b/src/libs/Environment/getEnvironment/index.ts @@ -1,6 +1,6 @@ import Config from 'react-native-config'; import CONST from '@src/CONST'; -import Environment from './types'; +import type Environment from './types'; function getEnvironment(): Promise { return Promise.resolve((Config?.ENVIRONMENT as Environment) ?? CONST.ENVIRONMENT.DEV); diff --git a/src/libs/Environment/getEnvironment/types.ts b/src/libs/Environment/getEnvironment/types.ts index 9247ed17ffe2..6f8cf505d2f3 100644 --- a/src/libs/Environment/getEnvironment/types.ts +++ b/src/libs/Environment/getEnvironment/types.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type Environment = ValueOf; diff --git a/src/libs/ErrorUtils.ts b/src/libs/ErrorUtils.ts index 46bdd510f5c4..159a5817189b 100644 --- a/src/libs/ErrorUtils.ts +++ b/src/libs/ErrorUtils.ts @@ -1,7 +1,7 @@ import CONST from '@src/CONST'; -import {TranslationFlatObject, TranslationPaths} from '@src/languages/types'; -import {ErrorFields, Errors} from '@src/types/onyx/OnyxCommon'; -import Response from '@src/types/onyx/Response'; +import type {TranslationFlatObject, TranslationPaths} from '@src/languages/types'; +import type {ErrorFields, Errors} from '@src/types/onyx/OnyxCommon'; +import type Response from '@src/types/onyx/Response'; import DateUtils from './DateUtils'; import * as Localize from './Localize'; diff --git a/src/libs/Firebase/index.native.ts b/src/libs/Firebase/index.native.ts index 107b3f8905b3..bf8551954671 100644 --- a/src/libs/Firebase/index.native.ts +++ b/src/libs/Firebase/index.native.ts @@ -1,7 +1,7 @@ /* eslint-disable no-unused-vars */ import perf from '@react-native-firebase/perf'; import * as Environment from '@libs/Environment/Environment'; -import {StartTrace, StopTrace, TraceMap} from './types'; +import type {StartTrace, StopTrace, TraceMap} from './types'; const traceMap: TraceMap = {}; diff --git a/src/libs/Firebase/index.ts b/src/libs/Firebase/index.ts index 3048cf1d9bd8..8698a841db4a 100644 --- a/src/libs/Firebase/index.ts +++ b/src/libs/Firebase/index.ts @@ -1,4 +1,4 @@ -import {StartTrace, StopTrace} from './types'; +import type {StartTrace, StopTrace} from './types'; /** Web does not use Firebase for performance tracing */ const startTrace: StartTrace = () => {}; diff --git a/src/libs/Firebase/types.ts b/src/libs/Firebase/types.ts index 3822f7072a7f..1a1d4959740a 100644 --- a/src/libs/Firebase/types.ts +++ b/src/libs/Firebase/types.ts @@ -1,4 +1,4 @@ -import {FirebasePerformanceTypes} from '@react-native-firebase/perf'; +import type {FirebasePerformanceTypes} from '@react-native-firebase/perf'; type Trace = { trace: FirebasePerformanceTypes.Trace; diff --git a/src/libs/FormUtils.ts b/src/libs/FormUtils.ts index facaf5bfddf4..5366e149728e 100644 --- a/src/libs/FormUtils.ts +++ b/src/libs/FormUtils.ts @@ -1,4 +1,4 @@ -import {OnyxFormKey} from '@src/ONYXKEYS'; +import type {OnyxFormKey} from '@src/ONYXKEYS'; type ExcludeDraft = T extends `${string}Draft` ? never : T; type OnyxFormKeyWithoutDraft = ExcludeDraft; diff --git a/src/libs/GetPhysicalCardUtils.ts b/src/libs/GetPhysicalCardUtils.ts index 9d77858cb2a9..eebefd7c1d52 100644 --- a/src/libs/GetPhysicalCardUtils.ts +++ b/src/libs/GetPhysicalCardUtils.ts @@ -1,5 +1,5 @@ import ROUTES from '@src/ROUTES'; -import {Login} from '@src/types/onyx'; +import type {Login} from '@src/types/onyx'; import Navigation from './Navigation/Navigation'; import * as PersonalDetailsUtils from './PersonalDetailsUtils'; import * as UserUtils from './UserUtils'; diff --git a/src/libs/GroupChatUtils.ts b/src/libs/GroupChatUtils.ts index 862c50700c0c..ba14bc9c9c3d 100644 --- a/src/libs/GroupChatUtils.ts +++ b/src/libs/GroupChatUtils.ts @@ -1,6 +1,7 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PersonalDetailsList, Report} from '@src/types/onyx'; +import type {PersonalDetailsList, Report} from '@src/types/onyx'; import * as OptionsListUtils from './OptionsListUtils'; import * as ReportUtils from './ReportUtils'; diff --git a/src/libs/HapticFeedback/index.native.ts b/src/libs/HapticFeedback/index.native.ts index 4c3605cc27ef..6d24ece3951c 100644 --- a/src/libs/HapticFeedback/index.native.ts +++ b/src/libs/HapticFeedback/index.native.ts @@ -1,5 +1,5 @@ import ReactNativeHapticFeedback from 'react-native-haptic-feedback'; -import HapticFeedback from './types'; +import type HapticFeedback from './types'; const hapticFeedback: HapticFeedback = { press: () => { diff --git a/src/libs/HapticFeedback/index.ts b/src/libs/HapticFeedback/index.ts index 3dd5b87f573b..7a006b42cab4 100644 --- a/src/libs/HapticFeedback/index.ts +++ b/src/libs/HapticFeedback/index.ts @@ -1,4 +1,4 @@ -import HapticFeedback from './types'; +import type HapticFeedback from './types'; /** * Web does not support Haptic feedback diff --git a/src/libs/HeaderUtils.ts b/src/libs/HeaderUtils.ts index ebf1b1139621..a1822aca00f4 100644 --- a/src/libs/HeaderUtils.ts +++ b/src/libs/HeaderUtils.ts @@ -1,7 +1,7 @@ -import {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; import * as Expensicons from '@components/Icon/Expensicons'; -import OnyxReport from '@src/types/onyx/Report'; -import IconAsset from '@src/types/utils/IconAsset'; +import type OnyxReport from '@src/types/onyx/Report'; +import type IconAsset from '@src/types/utils/IconAsset'; import * as Report from './actions/Report'; import * as Session from './actions/Session'; import * as Localize from './Localize'; diff --git a/src/libs/HttpUtils.ts b/src/libs/HttpUtils.ts index 859c8624833c..e40c8148c923 100644 --- a/src/libs/HttpUtils.ts +++ b/src/libs/HttpUtils.ts @@ -1,9 +1,9 @@ import Onyx from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import alert from '@components/Alert'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {RequestType} from '@src/types/onyx/Request'; +import type {RequestType} from '@src/types/onyx/Request'; import type Response from '@src/types/onyx/Response'; import * as ApiUtils from './ApiUtils'; import HttpsError from './Errors/HttpsError'; diff --git a/src/libs/IOUUtils.ts b/src/libs/IOUUtils.ts index edfb9e3691d0..09cdfd15cbba 100644 --- a/src/libs/IOUUtils.ts +++ b/src/libs/IOUUtils.ts @@ -1,8 +1,8 @@ -import {OnyxEntry} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxEntry} from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; -import {Report, Transaction} from '@src/types/onyx'; +import type {Report, Transaction} from '@src/types/onyx'; import * as CurrencyUtils from './CurrencyUtils'; import * as FileUtils from './fileDownload/FileUtils'; import Navigation from './Navigation/Navigation'; diff --git a/src/libs/IntlPolyfill/index.native.ts b/src/libs/IntlPolyfill/index.native.ts index a044b4c52f0d..0819479b50ec 100644 --- a/src/libs/IntlPolyfill/index.native.ts +++ b/src/libs/IntlPolyfill/index.native.ts @@ -1,6 +1,6 @@ import polyfillListFormat from './polyfillListFormat'; import polyfillNumberFormat from './polyfillNumberFormat'; -import IntlPolyfill from './types'; +import type IntlPolyfill from './types'; /** * Polyfill the Intl API, always performed for native devices. diff --git a/src/libs/IntlPolyfill/index.ts b/src/libs/IntlPolyfill/index.ts index bef12ef093e2..42664477409f 100644 --- a/src/libs/IntlPolyfill/index.ts +++ b/src/libs/IntlPolyfill/index.ts @@ -1,5 +1,5 @@ import polyfillNumberFormat from './polyfillNumberFormat'; -import IntlPolyfill from './types'; +import type IntlPolyfill from './types'; /** * Polyfill the Intl API if the ICU version is old. diff --git a/src/libs/KeyboardShortcut/KeyDownPressListener/index.native.ts b/src/libs/KeyboardShortcut/KeyDownPressListener/index.native.ts index 8b460a069f05..e506a97890c0 100644 --- a/src/libs/KeyboardShortcut/KeyDownPressListener/index.native.ts +++ b/src/libs/KeyboardShortcut/KeyDownPressListener/index.native.ts @@ -1,4 +1,4 @@ -import {AddKeyDownPressListener, RemoveKeyDownPressListener} from './types'; +import type {AddKeyDownPressListener, RemoveKeyDownPressListener} from './types'; const addKeyDownPressListener: AddKeyDownPressListener = () => {}; const removeKeyDownPressListener: RemoveKeyDownPressListener = () => {}; diff --git a/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.native.ts b/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.native.ts index 4deabb9aa5ef..bc56df0d67f3 100644 --- a/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.native.ts +++ b/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.native.ts @@ -1,5 +1,5 @@ import getKeyEventModifiers from '@libs/KeyboardShortcut/getKeyEventModifiers'; -import BindHandlerToKeydownEvent from './types'; +import type BindHandlerToKeydownEvent from './types'; /** * Checks if an event for that key is configured and if so, runs it. diff --git a/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.ts b/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.ts index f8e18a11971d..dd0aedcb5dbd 100644 --- a/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.ts +++ b/src/libs/KeyboardShortcut/bindHandlerToKeydownEvent/index.ts @@ -1,6 +1,6 @@ import getKeyEventModifiers from '@libs/KeyboardShortcut/getKeyEventModifiers'; import isEnterWhileComposition from '@libs/KeyboardShortcut/isEnterWhileComposition'; -import BindHandlerToKeydownEvent from './types'; +import type BindHandlerToKeydownEvent from './types'; /** * Checks if an event for that key is configured and if so, runs it. diff --git a/src/libs/KeyboardShortcut/getKeyEventModifiers.ts b/src/libs/KeyboardShortcut/getKeyEventModifiers.ts index f82de725bb50..d6fbf80bc5bf 100644 --- a/src/libs/KeyboardShortcut/getKeyEventModifiers.ts +++ b/src/libs/KeyboardShortcut/getKeyEventModifiers.ts @@ -1,5 +1,5 @@ import * as KeyCommand from 'react-native-key-command'; -import {KeyCommandEvent} from './bindHandlerToKeydownEvent/types'; +import type {KeyCommandEvent} from './bindHandlerToKeydownEvent/types'; const keyModifierControl = KeyCommand?.constants.keyModifierControl ?? 'keyModifierControl'; const keyModifierCommand = KeyCommand?.constants.keyModifierCommand ?? 'keyModifierCommand'; diff --git a/src/libs/KeyboardShortcut/isEnterWhileComposition.ts b/src/libs/KeyboardShortcut/isEnterWhileComposition.ts index a752f8a24811..71ec27f21c13 100644 --- a/src/libs/KeyboardShortcut/isEnterWhileComposition.ts +++ b/src/libs/KeyboardShortcut/isEnterWhileComposition.ts @@ -1,5 +1,5 @@ -import React from 'react'; -import {NativeSyntheticEvent} from 'react-native'; +import type React from 'react'; +import type {NativeSyntheticEvent} from 'react-native'; import * as Browser from '@libs/Browser'; import CONST from '@src/CONST'; diff --git a/src/libs/LocaleDigitUtils.ts b/src/libs/LocaleDigitUtils.ts index 05d9fea5357d..794c7611cb5c 100644 --- a/src/libs/LocaleDigitUtils.ts +++ b/src/libs/LocaleDigitUtils.ts @@ -1,6 +1,6 @@ import _ from 'lodash'; -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; import * as NumberFormatUtils from './NumberFormatUtils'; type Locale = ValueOf; diff --git a/src/libs/Localize/LocaleListener/BaseLocaleListener.ts b/src/libs/Localize/LocaleListener/BaseLocaleListener.ts index c5eba18af422..79422fa82c21 100644 --- a/src/libs/Localize/LocaleListener/BaseLocaleListener.ts +++ b/src/libs/Localize/LocaleListener/BaseLocaleListener.ts @@ -1,7 +1,8 @@ import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import BaseLocale, {LocaleListenerConnect} from './types'; +import type {LocaleListenerConnect} from './types'; +import type BaseLocale from './types'; let preferredLocale: BaseLocale = CONST.LOCALES.DEFAULT; diff --git a/src/libs/Localize/LocaleListener/index.desktop.ts b/src/libs/Localize/LocaleListener/index.desktop.ts index 6974d3ed4879..db5cbb1a51a6 100644 --- a/src/libs/Localize/LocaleListener/index.desktop.ts +++ b/src/libs/Localize/LocaleListener/index.desktop.ts @@ -1,6 +1,6 @@ import ELECTRON_EVENTS from '../../../../desktop/ELECTRON_EVENTS'; import BaseLocaleListener from './BaseLocaleListener'; -import {LocaleListener, LocaleListenerConnect} from './types'; +import type {LocaleListener, LocaleListenerConnect} from './types'; const localeListenerConnect: LocaleListenerConnect = (callbackAfterChange = () => {}) => BaseLocaleListener.connect((val) => { diff --git a/src/libs/Localize/LocaleListener/index.ts b/src/libs/Localize/LocaleListener/index.ts index b0dda5d5fabc..c08eb129934a 100644 --- a/src/libs/Localize/LocaleListener/index.ts +++ b/src/libs/Localize/LocaleListener/index.ts @@ -1,5 +1,5 @@ import BaseLocaleListener from './BaseLocaleListener'; -import {LocaleListener, LocaleListenerConnect} from './types'; +import type {LocaleListener, LocaleListenerConnect} from './types'; const localeListenerConnect: LocaleListenerConnect = BaseLocaleListener.connect; diff --git a/src/libs/Localize/LocaleListener/types.ts b/src/libs/Localize/LocaleListener/types.ts index 4daf90af0483..453e8c7f442a 100644 --- a/src/libs/Localize/LocaleListener/types.ts +++ b/src/libs/Localize/LocaleListener/types.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type BaseLocale = ValueOf; diff --git a/src/libs/Localize/index.ts b/src/libs/Localize/index.ts index 77c34ebdc576..bc40f93dd13b 100644 --- a/src/libs/Localize/index.ts +++ b/src/libs/Localize/index.ts @@ -1,11 +1,11 @@ import * as RNLocalize from 'react-native-localize'; import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; -import {MessageElementBase, MessageTextElement} from '@libs/MessageElement'; +import type {MessageElementBase, MessageTextElement} from '@libs/MessageElement'; import Config from '@src/CONFIG'; import CONST from '@src/CONST'; import translations from '@src/languages/translations'; -import {TranslationFlatObject, TranslationPaths} from '@src/languages/types'; +import type {TranslationFlatObject, TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import LocaleListener from './LocaleListener'; import BaseLocaleListener from './LocaleListener/BaseLocaleListener'; diff --git a/src/libs/Log.ts b/src/libs/Log.ts index e171e6338ffe..9916cdd23b76 100644 --- a/src/libs/Log.ts +++ b/src/libs/Log.ts @@ -3,7 +3,7 @@ /* eslint-disable rulesdir/no-api-in-views */ import Logger from 'expensify-common/lib/Logger'; -import {Merge} from 'type-fest'; +import type {Merge} from 'type-fest'; import pkg from '../../package.json'; import getPlatform from './getPlatform'; import * as Network from './Network'; diff --git a/src/libs/Metrics/index.native.ts b/src/libs/Metrics/index.native.ts index 373f826e9ca3..a1d008da653b 100644 --- a/src/libs/Metrics/index.native.ts +++ b/src/libs/Metrics/index.native.ts @@ -1,5 +1,5 @@ import CONFIG from '@src/CONFIG'; -import {CanCaptureOnyxMetrics, CanCapturePerformanceMetrics} from './types'; +import type {CanCaptureOnyxMetrics, CanCapturePerformanceMetrics} from './types'; /** * Is capturing performance stats enabled. diff --git a/src/libs/Metrics/index.ts b/src/libs/Metrics/index.ts index 1097826aff24..51248b891d81 100644 --- a/src/libs/Metrics/index.ts +++ b/src/libs/Metrics/index.ts @@ -1,5 +1,5 @@ import CONFIG from '@src/CONFIG'; -import {CanCaptureOnyxMetrics, CanCapturePerformanceMetrics} from './types'; +import type {CanCaptureOnyxMetrics, CanCapturePerformanceMetrics} from './types'; // We don't capture performance metrics on web as there are enough tools available const canCapturePerformanceMetrics: CanCapturePerformanceMetrics = () => false; diff --git a/src/libs/Middleware/HandleUnusedOptimisticID.ts b/src/libs/Middleware/HandleUnusedOptimisticID.ts index abca86522d2b..eb419401d84d 100644 --- a/src/libs/Middleware/HandleUnusedOptimisticID.ts +++ b/src/libs/Middleware/HandleUnusedOptimisticID.ts @@ -1,9 +1,9 @@ import _ from 'lodash'; import deepReplaceKeysAndValues from '@libs/deepReplaceKeysAndValues'; -import {Middleware} from '@libs/Request'; +import type {Middleware} from '@libs/Request'; import * as PersistedRequests from '@userActions/PersistedRequests'; import ONYXKEYS from '@src/ONYXKEYS'; -import Report from '@src/types/onyx/Report'; +import type Report from '@src/types/onyx/Report'; const handleUnusedOptimisticID: Middleware = (requestResponse, request, isFromSequentialQueue) => requestResponse.then((response) => { diff --git a/src/libs/Middleware/Logging.ts b/src/libs/Middleware/Logging.ts index 3ef819298f80..27a904f692ed 100644 --- a/src/libs/Middleware/Logging.ts +++ b/src/libs/Middleware/Logging.ts @@ -1,8 +1,8 @@ import Log from '@libs/Log'; import CONST from '@src/CONST'; -import Request from '@src/types/onyx/Request'; -import Response from '@src/types/onyx/Response'; -import Middleware from './types'; +import type Request from '@src/types/onyx/Request'; +import type Response from '@src/types/onyx/Response'; +import type Middleware from './types'; function logRequestDetails(message: string, request: Request, response?: Response | void) { // Don't log about log or else we'd cause an infinite loop diff --git a/src/libs/Middleware/Reauthentication.ts b/src/libs/Middleware/Reauthentication.ts index f1f71a85b16c..09a01e821cb2 100644 --- a/src/libs/Middleware/Reauthentication.ts +++ b/src/libs/Middleware/Reauthentication.ts @@ -5,7 +5,7 @@ import * as NetworkStore from '@libs/Network/NetworkStore'; import NetworkConnection from '@libs/NetworkConnection'; import * as Request from '@libs/Request'; import CONST from '@src/CONST'; -import Middleware from './types'; +import type Middleware from './types'; // We store a reference to the active authentication request so that we are only ever making one request to authenticate at a time. let isAuthenticating: Promise | null = null; diff --git a/src/libs/Middleware/RecheckConnection.ts b/src/libs/Middleware/RecheckConnection.ts index 1f43b0171800..f3f7d2e7b688 100644 --- a/src/libs/Middleware/RecheckConnection.ts +++ b/src/libs/Middleware/RecheckConnection.ts @@ -1,6 +1,6 @@ import NetworkConnection from '@libs/NetworkConnection'; import CONST from '@src/CONST'; -import Middleware from './types'; +import type Middleware from './types'; /** * @returns cancel timer diff --git a/src/libs/Middleware/SaveResponseInOnyx.ts b/src/libs/Middleware/SaveResponseInOnyx.ts index d73a10d98663..9ed93c4ce393 100644 --- a/src/libs/Middleware/SaveResponseInOnyx.ts +++ b/src/libs/Middleware/SaveResponseInOnyx.ts @@ -2,7 +2,7 @@ import * as MemoryOnlyKeys from '@userActions/MemoryOnlyKeys/MemoryOnlyKeys'; import * as OnyxUpdates from '@userActions/OnyxUpdates'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import Middleware from './types'; +import type Middleware from './types'; // If we're executing any of these requests, we don't need to trigger our OnyxUpdates flow to update the current data even if our current value is out of // date because all these requests are updating the app to the most current state. diff --git a/src/libs/Middleware/types.ts b/src/libs/Middleware/types.ts index c1d199539b15..4cc0a1cc1026 100644 --- a/src/libs/Middleware/types.ts +++ b/src/libs/Middleware/types.ts @@ -1,5 +1,5 @@ -import Request from '@src/types/onyx/Request'; -import Response from '@src/types/onyx/Response'; +import type Request from '@src/types/onyx/Request'; +import type Response from '@src/types/onyx/Response'; type Middleware = (response: Promise, request: Request, isFromSequentialQueue: boolean) => Promise; diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index c3d9b0a85339..600cfb48a1c1 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -2,12 +2,12 @@ import {format} from 'date-fns'; import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PolicyTags, ReportAction} from '@src/types/onyx'; +import type {PolicyTags, ReportAction} from '@src/types/onyx'; import * as CurrencyUtils from './CurrencyUtils'; import * as Localize from './Localize'; import * as PolicyUtils from './PolicyUtils'; import * as ReportUtils from './ReportUtils'; -import {ExpenseOriginalMessage} from './ReportUtils'; +import type {ExpenseOriginalMessage} from './ReportUtils'; let allPolicyTags: Record = {}; Onyx.connect({ diff --git a/src/libs/MoneyRequestUtils.ts b/src/libs/MoneyRequestUtils.ts index 209a82326f43..ff86070395b3 100644 --- a/src/libs/MoneyRequestUtils.ts +++ b/src/libs/MoneyRequestUtils.ts @@ -1,4 +1,4 @@ -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; /** diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx index fdef49d71eae..3751b9ebd29f 100644 --- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx +++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx @@ -1,6 +1,7 @@ import React, {memo, useEffect, useRef} from 'react'; import {View} from 'react-native'; -import Onyx, {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx, { withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import KeyboardShortcut from '@libs/KeyboardShortcut'; @@ -29,7 +30,7 @@ import NAVIGATORS from '@src/NAVIGATORS'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; import type {SelectedTimezone, Timezone} from '@src/types/onyx/PersonalDetails'; import createCustomStackNavigator from './createCustomStackNavigator'; import defaultScreenOptions from './defaultScreenOptions'; diff --git a/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts b/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts index 88ef57807010..4d6ef3c6df4a 100644 --- a/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts +++ b/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts @@ -1,5 +1,6 @@ -import {CardStyleInterpolators, StackNavigationOptions} from '@react-navigation/stack'; -import {ThemeStyles} from '@styles/index'; +import type { StackNavigationOptions} from '@react-navigation/stack'; +import {CardStyleInterpolators} from '@react-navigation/stack'; +import type {ThemeStyles} from '@styles/index'; /** * Modal stack navigator screen options generator function diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx index 151a795a7e36..ad8c717f63a1 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx @@ -1,5 +1,6 @@ -import {ParamListBase} from '@react-navigation/routers'; -import {CardStyleInterpolators, createStackNavigator, StackNavigationOptions} from '@react-navigation/stack'; +import type {ParamListBase} from '@react-navigation/routers'; +import type { StackNavigationOptions} from '@react-navigation/stack'; +import {CardStyleInterpolators, createStackNavigator} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import useThemeStyles from '@hooks/useThemeStyles'; import type { diff --git a/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx index b7385c930e2c..8f5e811ef674 100644 --- a/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx @@ -1,4 +1,5 @@ -import {createStackNavigator, StackScreenProps} from '@react-navigation/stack'; +import type { StackScreenProps} from '@react-navigation/stack'; +import {createStackNavigator} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import {View} from 'react-native'; import NoDropZone from '@components/DragAndDrop/NoDropZone'; @@ -6,8 +7,8 @@ import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import ModalNavigatorScreenOptions from '@libs/Navigation/AppNavigator/ModalNavigatorScreenOptions'; import * as ModalStackNavigators from '@libs/Navigation/AppNavigator/ModalStackNavigators'; -import {AuthScreensParamList, LeftModalNavigatorParamList} from '@libs/Navigation/types'; -import NAVIGATORS from '@src/NAVIGATORS'; +import type {AuthScreensParamList, LeftModalNavigatorParamList} from '@libs/Navigation/types'; +import type NAVIGATORS from '@src/NAVIGATORS'; import SCREENS from '@src/SCREENS'; import Overlay from './Overlay'; diff --git a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx index d7c31bcae7d9..d7a4fc121495 100644 --- a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx @@ -1,4 +1,5 @@ -import {createStackNavigator, StackScreenProps} from '@react-navigation/stack'; +import type { StackScreenProps} from '@react-navigation/stack'; +import {createStackNavigator} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import {View} from 'react-native'; import NoDropZone from '@components/DragAndDrop/NoDropZone'; @@ -7,7 +8,7 @@ import useWindowDimensions from '@hooks/useWindowDimensions'; import ModalNavigatorScreenOptions from '@libs/Navigation/AppNavigator/ModalNavigatorScreenOptions'; import * as ModalStackNavigators from '@libs/Navigation/AppNavigator/ModalStackNavigators'; import type {AuthScreensParamList, RightModalNavigatorParamList} from '@navigation/types'; -import NAVIGATORS from '@src/NAVIGATORS'; +import type NAVIGATORS from '@src/NAVIGATORS'; import SCREENS from '@src/SCREENS'; import Overlay from './Overlay'; diff --git a/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts b/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts index 7c310435f687..49002ce592bd 100644 --- a/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts +++ b/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts @@ -1,5 +1,6 @@ import {useEffect} from 'react'; -import {OnyxCollection, OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import usePermissions from '@hooks/usePermissions'; import * as ReportUtils from '@libs/ReportUtils'; import * as App from '@userActions/App'; diff --git a/src/libs/Navigation/AppNavigator/ReportScreenWrapper.tsx b/src/libs/Navigation/AppNavigator/ReportScreenWrapper.tsx index f3295aadb888..fd764cdb5861 100644 --- a/src/libs/Navigation/AppNavigator/ReportScreenWrapper.tsx +++ b/src/libs/Navigation/AppNavigator/ReportScreenWrapper.tsx @@ -1,8 +1,8 @@ -import {StackScreenProps} from '@react-navigation/stack'; +import type {StackScreenProps} from '@react-navigation/stack'; import React from 'react'; import type {CentralPaneNavigatorParamList} from '@navigation/types'; import ReportScreen from '@pages/home/ReportScreen'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import ReportScreenIDSetter from './ReportScreenIDSetter'; type ReportScreenWrapperProps = StackScreenProps; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts index 435ebc00362b..526541b40f54 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts @@ -1,5 +1,6 @@ -import {NavigationState, PartialState, RouterConfigOptions, StackNavigationState, StackRouter} from '@react-navigation/native'; -import {ParamListBase} from '@react-navigation/routers'; +import type {NavigationState, PartialState, RouterConfigOptions, StackNavigationState} from '@react-navigation/native'; +import { StackRouter} from '@react-navigation/native'; +import type {ParamListBase} from '@react-navigation/routers'; import getIsSmallScreenWidth from '@libs/getIsSmallScreenWidth'; import NAVIGATORS from '@src/NAVIGATORS'; import SCREENS from '@src/SCREENS'; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx index a55c74f3a479..d8e57c1aabf1 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx @@ -1,5 +1,7 @@ -import {createNavigatorFactory, ParamListBase, StackActionHelpers, StackNavigationState, useNavigationBuilder} from '@react-navigation/native'; -import {StackNavigationEventMap, StackNavigationOptions, StackView} from '@react-navigation/stack'; +import type { ParamListBase, StackActionHelpers, StackNavigationState} from '@react-navigation/native'; +import {createNavigatorFactory, useNavigationBuilder} from '@react-navigation/native'; +import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack'; +import { StackView} from '@react-navigation/stack'; import React, {useRef} from 'react'; import useWindowDimensions from '@hooks/useWindowDimensions'; import CustomRouter from './CustomRouter'; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx index dd2e548064c4..02fe493b78f1 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx @@ -1,5 +1,7 @@ -import {createNavigatorFactory, ParamListBase, StackActionHelpers, StackNavigationState, useNavigationBuilder} from '@react-navigation/native'; -import {StackNavigationEventMap, StackNavigationOptions, StackView} from '@react-navigation/stack'; +import type { ParamListBase, StackActionHelpers, StackNavigationState} from '@react-navigation/native'; +import {createNavigatorFactory, useNavigationBuilder} from '@react-navigation/native'; +import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack'; +import { StackView} from '@react-navigation/stack'; import React, {useMemo, useRef} from 'react'; import useWindowDimensions from '@hooks/useWindowDimensions'; import NAVIGATORS from '@src/NAVIGATORS'; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts index 707a0ff4498d..09d35e2a1680 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts @@ -1,5 +1,5 @@ -import {DefaultNavigatorOptions, ParamListBase, StackNavigationState, StackRouterOptions} from '@react-navigation/native'; -import {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack'; +import type {DefaultNavigatorOptions, ParamListBase, StackNavigationState, StackRouterOptions} from '@react-navigation/native'; +import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack'; type ResponsiveStackNavigatorConfig = { isSmallScreenWidth: boolean; diff --git a/src/libs/Navigation/AppNavigator/defaultScreenOptions.ts b/src/libs/Navigation/AppNavigator/defaultScreenOptions.ts index 65a6bd052742..4015c43c679e 100644 --- a/src/libs/Navigation/AppNavigator/defaultScreenOptions.ts +++ b/src/libs/Navigation/AppNavigator/defaultScreenOptions.ts @@ -1,4 +1,4 @@ -import {StackNavigationOptions} from '@react-navigation/stack'; +import type {StackNavigationOptions} from '@react-navigation/stack'; const defaultScreenOptions: StackNavigationOptions = { cardStyle: { diff --git a/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts b/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts index c80ae9914347..1c0f06283226 100644 --- a/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts +++ b/src/libs/Navigation/AppNavigator/getRootNavigatorScreenOptions.ts @@ -1,5 +1,5 @@ -import {StackCardInterpolationProps, StackNavigationOptions} from '@react-navigation/stack'; -import {ThemeStyles} from '@styles/index'; +import type {StackCardInterpolationProps, StackNavigationOptions} from '@react-navigation/stack'; +import type {ThemeStyles} from '@styles/index'; import getNavigationModalCardStyle from '@styles/utils/getNavigationModalCardStyles'; import variables from '@styles/variables'; import CONFIG from '@src/CONFIG'; diff --git a/src/libs/Navigation/FreezeWrapper.tsx b/src/libs/Navigation/FreezeWrapper.tsx index df3f117c9a2e..570553d38017 100644 --- a/src/libs/Navigation/FreezeWrapper.tsx +++ b/src/libs/Navigation/FreezeWrapper.tsx @@ -2,7 +2,7 @@ import {useIsFocused, useNavigation, useRoute} from '@react-navigation/native'; import React, {useEffect, useRef, useState} from 'react'; import {Freeze} from 'react-freeze'; import {InteractionManager} from 'react-native'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type FreezeWrapperProps = ChildrenProps & { /** Prop to disable freeze */ diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts index 284e5703635a..509e4cd93d85 100644 --- a/src/libs/Navigation/Navigation.ts +++ b/src/libs/Navigation/Navigation.ts @@ -1,9 +1,11 @@ import {findFocusedRoute} from '@react-navigation/core'; -import {CommonActions, EventArg, getPathFromState, NavigationContainerEventMap, NavigationState, PartialState, StackActions} from '@react-navigation/native'; +import type { EventArg, NavigationContainerEventMap, NavigationState, PartialState} from '@react-navigation/native'; +import {CommonActions, getPathFromState, StackActions} from '@react-navigation/native'; import Log from '@libs/Log'; import CONST from '@src/CONST'; import NAVIGATORS from '@src/NAVIGATORS'; -import ROUTES, {Route} from '@src/ROUTES'; +import type {Route} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; import {PROTECTED_SCREENS} from '@src/SCREENS'; import originalDismissModal from './dismissModal'; import originalGetTopmostReportActionId from './getTopmostReportActionID'; @@ -11,7 +13,7 @@ import originalGetTopmostReportId from './getTopmostReportId'; import linkingConfig from './linkingConfig'; import linkTo from './linkTo'; import navigationRef from './navigationRef'; -import {StateOrRoute} from './types'; +import type {StateOrRoute} from './types'; let resolveNavigationIsReadyPromise: () => void; const navigationIsReadyPromise = new Promise((resolve) => { diff --git a/src/libs/Navigation/NavigationRoot.tsx b/src/libs/Navigation/NavigationRoot.tsx index 48523162ba2e..a2abe02d3102 100644 --- a/src/libs/Navigation/NavigationRoot.tsx +++ b/src/libs/Navigation/NavigationRoot.tsx @@ -1,4 +1,5 @@ -import {DefaultTheme, getPathFromState, NavigationContainer, NavigationState} from '@react-navigation/native'; +import type { NavigationState} from '@react-navigation/native'; +import {DefaultTheme, getPathFromState, NavigationContainer} from '@react-navigation/native'; import React, {useEffect, useMemo, useRef} from 'react'; import useCurrentReportID from '@hooks/useCurrentReportID'; import useFlipper from '@hooks/useFlipper'; diff --git a/src/libs/Navigation/OnyxTabNavigator.tsx b/src/libs/Navigation/OnyxTabNavigator.tsx index ef41269045c6..c7bfc7396295 100644 --- a/src/libs/Navigation/OnyxTabNavigator.tsx +++ b/src/libs/Navigation/OnyxTabNavigator.tsx @@ -1,11 +1,12 @@ -import {createMaterialTopTabNavigator, MaterialTopTabNavigationEventMap} from '@react-navigation/material-top-tabs'; -import {EventMapCore, NavigationState, ScreenListeners} from '@react-navigation/native'; +import type { MaterialTopTabNavigationEventMap} from '@react-navigation/material-top-tabs'; +import {createMaterialTopTabNavigator} from '@react-navigation/material-top-tabs'; +import type {EventMapCore, NavigationState, ScreenListeners} from '@react-navigation/native'; import React from 'react'; import {withOnyx} from 'react-native-onyx'; -import {OnyxEntry} from 'react-native-onyx/lib/types'; +import type {OnyxEntry} from 'react-native-onyx/lib/types'; import Tab from '@userActions/Tab'; import ONYXKEYS from '@src/ONYXKEYS'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type OnyxTabNavigatorOnyxProps = { selectedTab: OnyxEntry; diff --git a/src/libs/Navigation/currentUrl/index.native.ts b/src/libs/Navigation/currentUrl/index.native.ts index 0c12ab8b4883..3f63391ab425 100644 --- a/src/libs/Navigation/currentUrl/index.native.ts +++ b/src/libs/Navigation/currentUrl/index.native.ts @@ -1,4 +1,4 @@ -import GetCurrentUrl from './types'; +import type GetCurrentUrl from './types'; const getCurrentUrl: GetCurrentUrl = () => ''; diff --git a/src/libs/Navigation/currentUrl/index.ts b/src/libs/Navigation/currentUrl/index.ts index f9afc6e15775..ecf3f6f17a9b 100644 --- a/src/libs/Navigation/currentUrl/index.ts +++ b/src/libs/Navigation/currentUrl/index.ts @@ -1,4 +1,4 @@ -import GetCurrentUrl from './types'; +import type GetCurrentUrl from './types'; const getCurrentUrl: GetCurrentUrl = () => window.location.href; diff --git a/src/libs/Navigation/dismissModal.ts b/src/libs/Navigation/dismissModal.ts index 37b4c6d9b9e6..c262def49738 100644 --- a/src/libs/Navigation/dismissModal.ts +++ b/src/libs/Navigation/dismissModal.ts @@ -1,5 +1,6 @@ import {getActionFromState} from '@react-navigation/core'; -import {NavigationContainerRef, StackActions} from '@react-navigation/native'; +import type {NavigationContainerRef} from '@react-navigation/native'; +import { StackActions} from '@react-navigation/native'; import {findLastIndex} from 'lodash'; import Log from '@libs/Log'; import NAVIGATORS from '@src/NAVIGATORS'; @@ -8,7 +9,7 @@ import SCREENS from '@src/SCREENS'; import getStateFromPath from './getStateFromPath'; import getTopmostReportId from './getTopmostReportId'; import linkingConfig from './linkingConfig'; -import {RootStackParamList, StackNavigationAction} from './types'; +import type {RootStackParamList, StackNavigationAction} from './types'; // This function is in a separate file than Navigation.js to avoid cyclic dependency. diff --git a/src/libs/Navigation/getStateFromPath.ts b/src/libs/Navigation/getStateFromPath.ts index 3a53b02fc3c7..f0c272a678e3 100644 --- a/src/libs/Navigation/getStateFromPath.ts +++ b/src/libs/Navigation/getStateFromPath.ts @@ -1,5 +1,6 @@ -import {NavigationState, PartialState, getStateFromPath as RNGetStateFromPath} from '@react-navigation/native'; -import {Route} from '@src/ROUTES'; +import type {NavigationState, PartialState} from '@react-navigation/native'; +import { getStateFromPath as RNGetStateFromPath} from '@react-navigation/native'; +import type {Route} from '@src/ROUTES'; import linkingConfig from './linkingConfig'; /** diff --git a/src/libs/Navigation/getTopmostReportActionID.ts b/src/libs/Navigation/getTopmostReportActionID.ts index 15ab1efef704..f9931343b2eb 100644 --- a/src/libs/Navigation/getTopmostReportActionID.ts +++ b/src/libs/Navigation/getTopmostReportActionID.ts @@ -1,7 +1,7 @@ -import {NavigationState, PartialState} from '@react-navigation/native'; +import type {NavigationState, PartialState} from '@react-navigation/native'; import NAVIGATORS from '@src/NAVIGATORS'; import SCREENS from '@src/SCREENS'; -import {RootStackParamList} from './types'; +import type {RootStackParamList} from './types'; // This function is in a separate file than Navigation.js to avoid cyclic dependency. diff --git a/src/libs/Navigation/getTopmostReportId.ts b/src/libs/Navigation/getTopmostReportId.ts index 3342761e7ccf..2c3b74e9f52f 100644 --- a/src/libs/Navigation/getTopmostReportId.ts +++ b/src/libs/Navigation/getTopmostReportId.ts @@ -1,7 +1,7 @@ -import {NavigationState, PartialState} from '@react-navigation/native'; +import type {NavigationState, PartialState} from '@react-navigation/native'; import NAVIGATORS from '@src/NAVIGATORS'; import SCREENS from '@src/SCREENS'; -import {RootStackParamList} from './types'; +import type {RootStackParamList} from './types'; // This function is in a separate file than Navigation.js to avoid cyclic dependency. diff --git a/src/libs/Navigation/linkTo.ts b/src/libs/Navigation/linkTo.ts index 86558765a6e6..b7746108ac93 100644 --- a/src/libs/Navigation/linkTo.ts +++ b/src/libs/Navigation/linkTo.ts @@ -1,14 +1,14 @@ import {getActionFromState} from '@react-navigation/core'; -import {NavigationAction, NavigationContainerRef, NavigationState, PartialState} from '@react-navigation/native'; -import {Writable} from 'type-fest'; +import type {NavigationAction, NavigationContainerRef, NavigationState, PartialState} from '@react-navigation/native'; +import type {Writable} from 'type-fest'; import CONST from '@src/CONST'; import NAVIGATORS from '@src/NAVIGATORS'; -import {Route} from '@src/ROUTES'; +import type {Route} from '@src/ROUTES'; import dismissModal from './dismissModal'; import getStateFromPath from './getStateFromPath'; import getTopmostReportId from './getTopmostReportId'; import linkingConfig from './linkingConfig'; -import {NavigationRoot, RootStackParamList, StackNavigationAction} from './types'; +import type {NavigationRoot, RootStackParamList, StackNavigationAction} from './types'; type ActionPayloadParams = { screen?: string; diff --git a/src/libs/Navigation/linkingConfig.ts b/src/libs/Navigation/linkingConfig.ts index 5f7ecd10cc8c..3b2350afcc43 100644 --- a/src/libs/Navigation/linkingConfig.ts +++ b/src/libs/Navigation/linkingConfig.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import {LinkingOptions} from '@react-navigation/native'; +import type {LinkingOptions} from '@react-navigation/native'; import CONST from '@src/CONST'; import NAVIGATORS from '@src/NAVIGATORS'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; -import {RootStackParamList} from './types'; +import type {RootStackParamList} from './types'; const linkingConfig: LinkingOptions = { prefixes: [ diff --git a/src/libs/Navigation/navigationRef.ts b/src/libs/Navigation/navigationRef.ts index 032d9f9f3d9a..17742e5d0937 100644 --- a/src/libs/Navigation/navigationRef.ts +++ b/src/libs/Navigation/navigationRef.ts @@ -1,5 +1,5 @@ import {createNavigationContainerRef} from '@react-navigation/native'; -import {NavigationRef} from './types'; +import type {NavigationRef} from './types'; const navigationRef: NavigationRef = createNavigationContainerRef(); diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 4823b44b89cb..505bc82180f4 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import {CommonActions, NavigationContainerRefWithCurrent, NavigationHelpers, NavigationState, NavigatorScreenParams, PartialRoute, Route} from '@react-navigation/native'; -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import NAVIGATORS from '@src/NAVIGATORS'; -import SCREENS from '@src/SCREENS'; +import type {CommonActions, NavigationContainerRefWithCurrent, NavigationHelpers, NavigationState, NavigatorScreenParams, PartialRoute, Route} from '@react-navigation/native'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type NAVIGATORS from '@src/NAVIGATORS'; +import type SCREENS from '@src/SCREENS'; type NavigationRef = NavigationContainerRefWithCurrent; diff --git a/src/libs/Network/MainQueue.ts b/src/libs/Network/MainQueue.ts index 3ae0d44680a4..b3d6fbea94ab 100644 --- a/src/libs/Network/MainQueue.ts +++ b/src/libs/Network/MainQueue.ts @@ -1,5 +1,5 @@ import * as Request from '@libs/Request'; -import OnyxRequest from '@src/types/onyx/Request'; +import type OnyxRequest from '@src/types/onyx/Request'; import * as NetworkStore from './NetworkStore'; import * as SequentialQueue from './SequentialQueue'; diff --git a/src/libs/Network/NetworkStore.ts b/src/libs/Network/NetworkStore.ts index 52e4147f1b3c..59a52dfd01c4 100644 --- a/src/libs/Network/NetworkStore.ts +++ b/src/libs/Network/NetworkStore.ts @@ -1,6 +1,6 @@ import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import Credentials from '@src/types/onyx/Credentials'; +import type Credentials from '@src/types/onyx/Credentials'; let credentials: Credentials | null = null; let authToken: string | null = null; diff --git a/src/libs/Network/SequentialQueue.ts b/src/libs/Network/SequentialQueue.ts index 5da032baaf45..f9a7cd0a996b 100644 --- a/src/libs/Network/SequentialQueue.ts +++ b/src/libs/Network/SequentialQueue.ts @@ -6,7 +6,7 @@ import * as PersistedRequests from '@userActions/PersistedRequests'; import * as QueuedOnyxUpdates from '@userActions/QueuedOnyxUpdates'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import OnyxRequest from '@src/types/onyx/Request'; +import type OnyxRequest from '@src/types/onyx/Request'; import * as NetworkStore from './NetworkStore'; let resolveIsReadyPromise: ((args?: unknown[]) => void) | undefined; diff --git a/src/libs/Network/index.ts b/src/libs/Network/index.ts index 4ccb8df01163..2adb4a2da4c2 100644 --- a/src/libs/Network/index.ts +++ b/src/libs/Network/index.ts @@ -1,7 +1,7 @@ import * as ActiveClientManager from '@libs/ActiveClientManager'; import CONST from '@src/CONST'; -import {Request} from '@src/types/onyx'; -import Response from '@src/types/onyx/Response'; +import type {Request} from '@src/types/onyx'; +import type Response from '@src/types/onyx/Response'; import pkg from '../../../package.json'; import * as MainQueue from './MainQueue'; import * as SequentialQueue from './SequentialQueue'; diff --git a/src/libs/Notification/LocalNotification/BrowserNotifications.ts b/src/libs/Notification/LocalNotification/BrowserNotifications.ts index 6bd6c73982eb..e65bd3d0021f 100644 --- a/src/libs/Notification/LocalNotification/BrowserNotifications.ts +++ b/src/libs/Notification/LocalNotification/BrowserNotifications.ts @@ -1,13 +1,13 @@ // Web and desktop implementation only. Do not import for direct use. Use LocalNotification. import Str from 'expensify-common/lib/str'; -import {ImageSourcePropType} from 'react-native'; +import type {ImageSourcePropType} from 'react-native'; import EXPENSIFY_ICON_URL from '@assets/images/expensify-logo-round-clearspace.png'; import ModifiedExpenseMessage from '@libs/ModifiedExpenseMessage'; import * as ReportUtils from '@libs/ReportUtils'; import * as AppUpdate from '@userActions/AppUpdate'; -import {Report, ReportAction} from '@src/types/onyx'; +import type {Report, ReportAction} from '@src/types/onyx'; import focusApp from './focusApp'; -import {LocalNotificationClickHandler, LocalNotificationData} from './types'; +import type {LocalNotificationClickHandler, LocalNotificationData} from './types'; const notificationCache: Record = {}; diff --git a/src/libs/Notification/LocalNotification/focusApp/index.desktop.ts b/src/libs/Notification/LocalNotification/focusApp/index.desktop.ts index 2b6f01457f44..595bd273c098 100644 --- a/src/libs/Notification/LocalNotification/focusApp/index.desktop.ts +++ b/src/libs/Notification/LocalNotification/focusApp/index.desktop.ts @@ -1,5 +1,5 @@ import ELECTRON_EVENTS from '../../../../../desktop/ELECTRON_EVENTS'; -import FocusApp from './types'; +import type FocusApp from './types'; const focusApp: FocusApp = () => { window.electron.send(ELECTRON_EVENTS.REQUEST_FOCUS_APP); diff --git a/src/libs/Notification/LocalNotification/focusApp/index.ts b/src/libs/Notification/LocalNotification/focusApp/index.ts index 8504fde1bcb2..c5c069f9ddf6 100644 --- a/src/libs/Notification/LocalNotification/focusApp/index.ts +++ b/src/libs/Notification/LocalNotification/focusApp/index.ts @@ -1,4 +1,4 @@ -import FocusApp from './types'; +import type FocusApp from './types'; // On web this is up to the browser that shows the notifications const focusApp: FocusApp = () => {}; diff --git a/src/libs/Notification/LocalNotification/index.desktop.ts b/src/libs/Notification/LocalNotification/index.desktop.ts index e2aa5fcf2830..4baf1abee139 100644 --- a/src/libs/Notification/LocalNotification/index.desktop.ts +++ b/src/libs/Notification/LocalNotification/index.desktop.ts @@ -1,6 +1,6 @@ -import {Report, ReportAction} from '@src/types/onyx'; +import type {Report, ReportAction} from '@src/types/onyx'; import BrowserNotifications from './BrowserNotifications'; -import {LocalNotificationClickHandler, LocalNotificationModule} from './types'; +import type {LocalNotificationClickHandler, LocalNotificationModule} from './types'; function showCommentNotification(report: Report, reportAction: ReportAction, onClick: LocalNotificationClickHandler) { BrowserNotifications.pushReportCommentNotification(report, reportAction, onClick); diff --git a/src/libs/Notification/LocalNotification/index.native.ts b/src/libs/Notification/LocalNotification/index.native.ts index 2b4e54286c06..49868d8515c9 100644 --- a/src/libs/Notification/LocalNotification/index.native.ts +++ b/src/libs/Notification/LocalNotification/index.native.ts @@ -1,4 +1,4 @@ -import {LocalNotificationModule} from './types'; +import type {LocalNotificationModule} from './types'; // Local Notifications are not currently supported on mobile so we'll just no-op here. const LocalNotification: LocalNotificationModule = { diff --git a/src/libs/Notification/LocalNotification/index.ts b/src/libs/Notification/LocalNotification/index.ts index 469e5f9bc08b..2141000d807d 100644 --- a/src/libs/Notification/LocalNotification/index.ts +++ b/src/libs/Notification/LocalNotification/index.ts @@ -1,6 +1,6 @@ -import {Report, ReportAction} from '@src/types/onyx'; +import type {Report, ReportAction} from '@src/types/onyx'; import BrowserNotifications from './BrowserNotifications'; -import {LocalNotificationClickHandler, LocalNotificationModule} from './types'; +import type {LocalNotificationClickHandler, LocalNotificationModule} from './types'; function showCommentNotification(report: Report, reportAction: ReportAction, onClick: LocalNotificationClickHandler) { BrowserNotifications.pushReportCommentNotification(report, reportAction, onClick, true); diff --git a/src/libs/Notification/LocalNotification/types.ts b/src/libs/Notification/LocalNotification/types.ts index d8441fb1f4bb..dc9607743dfb 100644 --- a/src/libs/Notification/LocalNotification/types.ts +++ b/src/libs/Notification/LocalNotification/types.ts @@ -1,5 +1,5 @@ -import ClearReportNotifications from '@libs/Notification/clearReportNotifications/types'; -import {Report, ReportAction} from '@src/types/onyx'; +import type ClearReportNotifications from '@libs/Notification/clearReportNotifications/types'; +import type {Report, ReportAction} from '@src/types/onyx'; type LocalNotificationClickHandler = () => void; diff --git a/src/libs/Notification/PushNotification/ForegroundNotifications/index.android.ts b/src/libs/Notification/PushNotification/ForegroundNotifications/index.android.ts index 5eef0b44a7d1..d7099c4c3d6b 100644 --- a/src/libs/Notification/PushNotification/ForegroundNotifications/index.android.ts +++ b/src/libs/Notification/PushNotification/ForegroundNotifications/index.android.ts @@ -1,6 +1,6 @@ import Airship from '@ua/react-native-airship'; import shouldShowPushNotification from '@libs/Notification/PushNotification/shouldShowPushNotification'; -import ForegroundNotificationsModule from './types'; +import type ForegroundNotificationsModule from './types'; function configureForegroundNotifications() { Airship.push.android.setForegroundDisplayPredicate((pushPayload) => Promise.resolve(shouldShowPushNotification(pushPayload))); diff --git a/src/libs/Notification/PushNotification/ForegroundNotifications/index.ios.ts b/src/libs/Notification/PushNotification/ForegroundNotifications/index.ios.ts index e5e5665d1ea2..e5004ae2bf0b 100644 --- a/src/libs/Notification/PushNotification/ForegroundNotifications/index.ios.ts +++ b/src/libs/Notification/PushNotification/ForegroundNotifications/index.ios.ts @@ -1,6 +1,6 @@ import Airship, {iOS} from '@ua/react-native-airship'; import shouldShowPushNotification from '@libs/Notification/PushNotification/shouldShowPushNotification'; -import ForegroundNotificationsModule from './types'; +import type ForegroundNotificationsModule from './types'; function configureForegroundNotifications() { // Set our default iOS foreground presentation to be loud with a banner diff --git a/src/libs/Notification/PushNotification/ForegroundNotifications/index.ts b/src/libs/Notification/PushNotification/ForegroundNotifications/index.ts index 25baa34099b6..e397c2a570ee 100644 --- a/src/libs/Notification/PushNotification/ForegroundNotifications/index.ts +++ b/src/libs/Notification/PushNotification/ForegroundNotifications/index.ts @@ -1,4 +1,4 @@ -import ForegroundNotificationsModule from './types'; +import type ForegroundNotificationsModule from './types'; /** * Configures notification handling while in the foreground on iOS and Android. This is a no-op on other platforms. diff --git a/src/libs/Notification/PushNotification/NotificationType.ts b/src/libs/Notification/PushNotification/NotificationType.ts index 91eec6895394..d6ec246eddf7 100644 --- a/src/libs/Notification/PushNotification/NotificationType.ts +++ b/src/libs/Notification/PushNotification/NotificationType.ts @@ -1,4 +1,4 @@ -import {OnyxServerUpdate} from '@src/types/onyx/OnyxUpdatesFromServer'; +import type {OnyxServerUpdate} from '@src/types/onyx/OnyxUpdatesFromServer'; const NotificationType = { REPORT_COMMENT: 'reportComment', diff --git a/src/libs/Notification/PushNotification/backgroundRefresh/index.android.ts b/src/libs/Notification/PushNotification/backgroundRefresh/index.android.ts index 2b3c6ebf21b4..ff63f5aefa2b 100644 --- a/src/libs/Notification/PushNotification/backgroundRefresh/index.android.ts +++ b/src/libs/Notification/PushNotification/backgroundRefresh/index.android.ts @@ -4,7 +4,7 @@ import Visibility from '@libs/Visibility'; import * as App from '@userActions/App'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import BackgroundRefresh from './types'; +import type BackgroundRefresh from './types'; function getLastOnyxUpdateID(): Promise { return new Promise((resolve) => { diff --git a/src/libs/Notification/PushNotification/backgroundRefresh/index.ts b/src/libs/Notification/PushNotification/backgroundRefresh/index.ts index c7f47a532d89..54fd14e219a9 100644 --- a/src/libs/Notification/PushNotification/backgroundRefresh/index.ts +++ b/src/libs/Notification/PushNotification/backgroundRefresh/index.ts @@ -1,4 +1,4 @@ -import BackgroundRefresh from './types'; +import type BackgroundRefresh from './types'; /** * Runs our reconnectApp action if the app is in the background. diff --git a/src/libs/Notification/PushNotification/index.native.ts b/src/libs/Notification/PushNotification/index.native.ts index 7b2571eea368..b172c4d4f7ac 100644 --- a/src/libs/Notification/PushNotification/index.native.ts +++ b/src/libs/Notification/PushNotification/index.native.ts @@ -1,11 +1,14 @@ -import Airship, {EventType, PushPayload} from '@ua/react-native-airship'; +import type { PushPayload} from '@ua/react-native-airship'; +import Airship, {EventType} from '@ua/react-native-airship'; import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; import * as PushNotificationActions from '@userActions/PushNotification'; import ONYXKEYS from '@src/ONYXKEYS'; import ForegroundNotifications from './ForegroundNotifications'; -import NotificationType, {NotificationData} from './NotificationType'; -import PushNotificationType, {ClearNotifications, Deregister, Init, OnReceived, OnSelected, Register} from './types'; +import type {NotificationData} from './NotificationType'; +import NotificationType from './NotificationType'; +import type {ClearNotifications, Deregister, Init, OnReceived, OnSelected, Register} from './types'; +import type PushNotificationType from './types'; type NotificationEventActionCallback = (data: NotificationData) => void; diff --git a/src/libs/Notification/PushNotification/index.ts b/src/libs/Notification/PushNotification/index.ts index 1e5499d1fe7d..66f3d91af7c6 100644 --- a/src/libs/Notification/PushNotification/index.ts +++ b/src/libs/Notification/PushNotification/index.ts @@ -1,5 +1,5 @@ import NotificationType from './NotificationType'; -import PushNotificationType from './types'; +import type PushNotificationType from './types'; // Push notifications are only supported on mobile, so we'll just noop here const PushNotification: PushNotificationType = { diff --git a/src/libs/Notification/PushNotification/shouldShowPushNotification.ts b/src/libs/Notification/PushNotification/shouldShowPushNotification.ts index 46f99fcc9271..89aa53b5634a 100644 --- a/src/libs/Notification/PushNotification/shouldShowPushNotification.ts +++ b/src/libs/Notification/PushNotification/shouldShowPushNotification.ts @@ -1,8 +1,8 @@ -import {PushPayload} from '@ua/react-native-airship'; +import type {PushPayload} from '@ua/react-native-airship'; import Log from '@libs/Log'; import * as ReportActionUtils from '@libs/ReportActionsUtils'; import * as Report from '@userActions/Report'; -import {NotificationData} from './NotificationType'; +import type {NotificationData} from './NotificationType'; /** * Returns whether the given Airship notification should be shown depending on the current state of the app diff --git a/src/libs/Notification/PushNotification/types.ts b/src/libs/Notification/PushNotification/types.ts index f72ee1af887a..4399c10b4a95 100644 --- a/src/libs/Notification/PushNotification/types.ts +++ b/src/libs/Notification/PushNotification/types.ts @@ -1,5 +1,6 @@ -import {ValueOf} from 'type-fest'; -import NotificationType, {NotificationDataMap} from './NotificationType'; +import type {ValueOf} from 'type-fest'; +import type {NotificationDataMap} from './NotificationType'; +import type NotificationType from './NotificationType'; type Init = () => void; type Register = (notificationID: string | number) => void; diff --git a/src/libs/Notification/clearReportNotifications/index.android.ts b/src/libs/Notification/clearReportNotifications/index.android.ts index 8f0e8cc2ea69..8c2a44ba29d3 100644 --- a/src/libs/Notification/clearReportNotifications/index.android.ts +++ b/src/libs/Notification/clearReportNotifications/index.android.ts @@ -1,4 +1,4 @@ -import ClearReportNotifications from './types'; +import type ClearReportNotifications from './types'; /** * This is a temporary fix for issues with our Notification Cache not being cleared in Android. diff --git a/src/libs/Notification/clearReportNotifications/index.ios.ts b/src/libs/Notification/clearReportNotifications/index.ios.ts index 74b2c7faa50f..d9a30320a02e 100644 --- a/src/libs/Notification/clearReportNotifications/index.ios.ts +++ b/src/libs/Notification/clearReportNotifications/index.ios.ts @@ -1,8 +1,9 @@ -import Airship, {PushPayload} from '@ua/react-native-airship'; +import type {PushPayload} from '@ua/react-native-airship'; +import Airship from '@ua/react-native-airship'; import Log from '@libs/Log'; -import {NotificationData} from '@libs/Notification/PushNotification/NotificationType'; +import type {NotificationData} from '@libs/Notification/PushNotification/NotificationType'; import CONST from '@src/CONST'; -import ClearReportNotifications from './types'; +import type ClearReportNotifications from './types'; const parseNotificationAndReportIDs = (pushPayload: PushPayload) => { let payload = pushPayload.extras.payload; diff --git a/src/libs/Notification/clearReportNotifications/index.ts b/src/libs/Notification/clearReportNotifications/index.ts index fa8ceac6b05d..a154bf89d764 100644 --- a/src/libs/Notification/clearReportNotifications/index.ts +++ b/src/libs/Notification/clearReportNotifications/index.ts @@ -1,5 +1,5 @@ import LocalNotification from '@libs/Notification/LocalNotification'; -import ClearReportNotifications from './types'; +import type ClearReportNotifications from './types'; const clearReportNotifications: ClearReportNotifications = LocalNotification.clearReportNotifications; export default clearReportNotifications; diff --git a/src/libs/NumberFormatUtils.ts b/src/libs/NumberFormatUtils.ts index b077f0ce0862..bf42e25cbb48 100644 --- a/src/libs/NumberFormatUtils.ts +++ b/src/libs/NumberFormatUtils.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; function format(locale: ValueOf, number: number, options?: Intl.NumberFormatOptions): string { return new Intl.NumberFormat(locale, options).format(number); diff --git a/src/libs/OnyxSelectors/reportWithoutHasDraftSelector.ts b/src/libs/OnyxSelectors/reportWithoutHasDraftSelector.ts index 9fd89cfdf146..1062aa4b45c6 100644 --- a/src/libs/OnyxSelectors/reportWithoutHasDraftSelector.ts +++ b/src/libs/OnyxSelectors/reportWithoutHasDraftSelector.ts @@ -1,4 +1,4 @@ -import {OnyxKeyValue} from '@src/ONYXKEYS'; +import type {OnyxKeyValue} from '@src/ONYXKEYS'; export default function reportWithoutHasDraftSelector(report: OnyxKeyValue<'report_'>) { if (!report) { diff --git a/src/libs/PaymentUtils.ts b/src/libs/PaymentUtils.ts index e41b3295a2c5..dd35d0df5cfb 100644 --- a/src/libs/PaymentUtils.ts +++ b/src/libs/PaymentUtils.ts @@ -1,9 +1,9 @@ import getBankIcon from '@components/Icon/BankIcons'; -import {type ThemeStyles} from '@styles/index'; +import type {ThemeStyles} from '@styles/index'; import CONST from '@src/CONST'; -import BankAccount from '@src/types/onyx/BankAccount'; -import Fund from '@src/types/onyx/Fund'; -import PaymentMethod from '@src/types/onyx/PaymentMethod'; +import type BankAccount from '@src/types/onyx/BankAccount'; +import type Fund from '@src/types/onyx/Fund'; +import type PaymentMethod from '@src/types/onyx/PaymentMethod'; import * as Localize from './Localize'; import BankAccountModel from './models/BankAccount'; diff --git a/src/libs/Performance.tsx b/src/libs/Performance.tsx index 03d701e50075..a2667955326d 100644 --- a/src/libs/Performance.tsx +++ b/src/libs/Performance.tsx @@ -3,8 +3,8 @@ import isObject from 'lodash/isObject'; import lodashTransform from 'lodash/transform'; import React, {forwardRef, Profiler} from 'react'; import {Alert, InteractionManager} from 'react-native'; -import {PerformanceEntry, PerformanceMark, PerformanceMeasure, Performance as RNPerformance} from 'react-native-performance'; -import {PerformanceObserverEntryList} from 'react-native-performance/lib/typescript/performance-observer'; +import type {PerformanceEntry, PerformanceMark, PerformanceMeasure, Performance as RNPerformance} from 'react-native-performance'; +import type {PerformanceObserverEntryList} from 'react-native-performance/lib/typescript/performance-observer'; import CONST from '@src/CONST'; import isE2ETestSession from './E2E/isE2ETestSession'; import getComponentDisplayName from './getComponentDisplayName'; diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 9cde613ebb5a..85e64651980e 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -1,6 +1,6 @@ -import {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; import CONST from '@src/CONST'; -import Beta from '@src/types/onyx/Beta'; +import type Beta from '@src/types/onyx/Beta'; function canUseAllBetas(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.ALL); diff --git a/src/libs/PersonalDetailsUtils.ts b/src/libs/PersonalDetailsUtils.ts index 3eb752bac983..2e8705a54ad8 100644 --- a/src/libs/PersonalDetailsUtils.ts +++ b/src/libs/PersonalDetailsUtils.ts @@ -1,8 +1,9 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; -import {PersonalDetails, PersonalDetailsList} from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; +import type {PersonalDetails, PersonalDetailsList} from '@src/types/onyx'; import * as LocalePhoneNumber from './LocalePhoneNumber'; import * as Localize from './Localize'; import * as UserUtils from './UserUtils'; diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index bc7ddb14b53e..57e3dcb94cb5 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -1,9 +1,10 @@ import Str from 'expensify-common/lib/str'; -import {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PersonalDetailsList, Policy, PolicyMembers, PolicyTag, PolicyTags} from '@src/types/onyx'; -import {EmptyObject, isEmptyObject} from '@src/types/utils/EmptyObject'; +import type {PersonalDetailsList, Policy, PolicyMembers, PolicyTag, PolicyTags} from '@src/types/onyx'; +import type {EmptyObject} from '@src/types/utils/EmptyObject'; +import { isEmptyObject} from '@src/types/utils/EmptyObject'; type MemberEmailsToAccountIDs = Record; type UnitRate = {rate: number}; diff --git a/src/libs/Pusher/library/index.native.ts b/src/libs/Pusher/library/index.native.ts index f50834366515..4f11506f10fa 100644 --- a/src/libs/Pusher/library/index.native.ts +++ b/src/libs/Pusher/library/index.native.ts @@ -3,7 +3,7 @@ * @see: https://github.com/pusher/pusher-js */ import PusherImplementation from 'pusher-js/react-native'; -import Pusher from './types'; +import type Pusher from './types'; const PusherNative: Pusher = PusherImplementation; diff --git a/src/libs/Pusher/library/types.ts b/src/libs/Pusher/library/types.ts index cc8c70fccdbb..566fd8a72774 100644 --- a/src/libs/Pusher/library/types.ts +++ b/src/libs/Pusher/library/types.ts @@ -1,5 +1,5 @@ -import PusherClass from 'pusher-js/with-encryption'; -import {LiteralUnion} from 'type-fest'; +import type PusherClass from 'pusher-js/with-encryption'; +import type {LiteralUnion} from 'type-fest'; type Pusher = typeof PusherClass; diff --git a/src/libs/Pusher/pusher.ts b/src/libs/Pusher/pusher.ts index 33219b1dfe73..b6a5390bd501 100644 --- a/src/libs/Pusher/pusher.ts +++ b/src/libs/Pusher/pusher.ts @@ -1,15 +1,15 @@ import isObject from 'lodash/isObject'; -import {Channel, ChannelAuthorizerGenerator, Options} from 'pusher-js/with-encryption'; +import type {Channel, ChannelAuthorizerGenerator, Options} from 'pusher-js/with-encryption'; import Onyx from 'react-native-onyx'; -import {LiteralUnion, ValueOf} from 'type-fest'; +import type {LiteralUnion, ValueOf} from 'type-fest'; import Log from '@libs/Log'; -import CONST from '@src/CONST'; +import type CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {OnyxUpdateEvent, OnyxUpdatesFromServer, ReportUserIsTyping} from '@src/types/onyx'; -import DeepValueOf from '@src/types/utils/DeepValueOf'; +import type {OnyxUpdateEvent, OnyxUpdatesFromServer, ReportUserIsTyping} from '@src/types/onyx'; +import type DeepValueOf from '@src/types/utils/DeepValueOf'; import TYPE from './EventType'; import Pusher from './library'; -import {SocketEventName} from './library/types'; +import type {SocketEventName} from './library/types'; type States = { previous: string; diff --git a/src/libs/PusherConnectionManager.ts b/src/libs/PusherConnectionManager.ts index a0c5673af729..597670d3f5ad 100644 --- a/src/libs/PusherConnectionManager.ts +++ b/src/libs/PusherConnectionManager.ts @@ -1,10 +1,10 @@ -import {ChannelAuthorizationCallback} from 'pusher-js/with-encryption'; +import type {ChannelAuthorizationCallback} from 'pusher-js/with-encryption'; import CONST from '@src/CONST'; import * as Session from './actions/Session'; import Log from './Log'; -import {SocketEventName} from './Pusher/library/types'; +import type {SocketEventName} from './Pusher/library/types'; import * as Pusher from './Pusher/pusher'; -import {EventCallbackError, States} from './Pusher/pusher'; +import type {EventCallbackError, States} from './Pusher/pusher'; function init() { /** diff --git a/src/libs/PusherUtils.ts b/src/libs/PusherUtils.ts index 9f7e21ef9005..1ee75eb9c2f6 100644 --- a/src/libs/PusherUtils.ts +++ b/src/libs/PusherUtils.ts @@ -1,10 +1,10 @@ -import {OnyxUpdate} from 'react-native-onyx'; +import type {OnyxUpdate} from 'react-native-onyx'; import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import Log from './Log'; import NetworkConnection from './NetworkConnection'; import * as Pusher from './Pusher/pusher'; -import {PushJSON} from './Pusher/pusher'; +import type {PushJSON} from './Pusher/pusher'; type Callback = (data: OnyxUpdate[]) => Promise; diff --git a/src/libs/ReceiptUtils.ts b/src/libs/ReceiptUtils.ts index 1151b559746d..734c40271208 100644 --- a/src/libs/ReceiptUtils.ts +++ b/src/libs/ReceiptUtils.ts @@ -1,12 +1,12 @@ import Str from 'expensify-common/lib/str'; -import {ImageSourcePropType} from 'react-native'; +import type {ImageSourcePropType} from 'react-native'; import ReceiptDoc from '@assets/images/receipt-doc.png'; import ReceiptGeneric from '@assets/images/receipt-generic.png'; import ReceiptHTML from '@assets/images/receipt-html.png'; import ReceiptSVG from '@assets/images/receipt-svg.png'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; -import {Transaction} from '@src/types/onyx'; +import type {Transaction} from '@src/types/onyx'; import * as FileUtils from './fileDownload/FileUtils'; type ThumbnailAndImageURI = { diff --git a/src/libs/ReportActionComposeFocusManager.ts b/src/libs/ReportActionComposeFocusManager.ts index 9d4039117989..123d97987e14 100644 --- a/src/libs/ReportActionComposeFocusManager.ts +++ b/src/libs/ReportActionComposeFocusManager.ts @@ -1,5 +1,5 @@ import React from 'react'; -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; import ROUTES from '@src/ROUTES'; import Navigation from './Navigation/Navigation'; diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 34477d7f71ef..6f1425f9b152 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1,20 +1,23 @@ import _ from 'lodash'; import lodashFindLast from 'lodash/findLast'; -import Onyx, {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import type {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import OnyxUtils from 'react-native-onyx/lib/utils'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {ActionName, ChangeLog} from '@src/types/onyx/OriginalMessage'; -import Report from '@src/types/onyx/Report'; -import ReportAction, {Message, ReportActions} from '@src/types/onyx/ReportAction'; -import {EmptyObject, isEmptyObject} from '@src/types/utils/EmptyObject'; +import type {ActionName, ChangeLog} from '@src/types/onyx/OriginalMessage'; +import type Report from '@src/types/onyx/Report'; +import type {Message, ReportActions} from '@src/types/onyx/ReportAction'; +import type ReportAction from '@src/types/onyx/ReportAction'; +import type {EmptyObject} from '@src/types/utils/EmptyObject'; +import { isEmptyObject} from '@src/types/utils/EmptyObject'; import * as CollectionUtils from './CollectionUtils'; import * as Environment from './Environment/Environment'; import isReportMessageAttachment from './isReportMessageAttachment'; import * as Localize from './Localize'; import Log from './Log'; -import {MessageElementBase, MessageTextElement} from './MessageElement'; +import type {MessageElementBase, MessageTextElement} from './MessageElement'; import * as PersonalDetailsUtils from './PersonalDetailsUtils'; type LastVisibleMessage = { diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 470d9f3392d3..a51220bd1df4 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5,24 +5,26 @@ import lodashEscape from 'lodash/escape'; import lodashFindLastIndex from 'lodash/findLastIndex'; import lodashIntersection from 'lodash/intersection'; import lodashIsEqual from 'lodash/isEqual'; -import Onyx, {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import * as Expensicons from '@components/Icon/Expensicons'; import * as defaultWorkspaceAvatars from '@components/Icon/WorkspaceDefaultAvatars'; import CONST from '@src/CONST'; -import {ParentNavigationSummaryParams, TranslationPaths} from '@src/languages/types'; +import type {ParentNavigationSummaryParams, TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import {Beta, Login, PersonalDetails, PersonalDetailsList, Policy, Report, ReportAction, ReportMetadata, Session, Transaction} from '@src/types/onyx'; -import {Errors, Icon, PendingAction} from '@src/types/onyx/OnyxCommon'; -import {IOUMessage, OriginalMessageActionName, OriginalMessageCreated} from '@src/types/onyx/OriginalMessage'; -import {Status} from '@src/types/onyx/PersonalDetails'; -import {NotificationPreference} from '@src/types/onyx/Report'; -import {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; -import {Receipt, WaypointCollection} from '@src/types/onyx/Transaction'; -import DeepValueOf from '@src/types/utils/DeepValueOf'; -import {EmptyObject, isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {Beta, Login, PersonalDetails, PersonalDetailsList, Policy, Report, ReportAction, ReportMetadata, Session, Transaction} from '@src/types/onyx'; +import type {Errors, Icon, PendingAction} from '@src/types/onyx/OnyxCommon'; +import type {IOUMessage, OriginalMessageActionName, OriginalMessageCreated} from '@src/types/onyx/OriginalMessage'; +import type {Status} from '@src/types/onyx/PersonalDetails'; +import type {NotificationPreference} from '@src/types/onyx/Report'; +import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; +import type {Receipt, WaypointCollection} from '@src/types/onyx/Transaction'; +import type DeepValueOf from '@src/types/utils/DeepValueOf'; +import type {EmptyObject} from '@src/types/utils/EmptyObject'; +import { isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; +import type IconAsset from '@src/types/utils/IconAsset'; import * as CurrencyUtils from './CurrencyUtils'; import DateUtils from './DateUtils'; import isReportMessageAttachment from './isReportMessageAttachment'; @@ -35,7 +37,7 @@ import Permissions from './Permissions'; import * as PersonalDetailsUtils from './PersonalDetailsUtils'; import * as PolicyUtils from './PolicyUtils'; import * as ReportActionsUtils from './ReportActionsUtils'; -import {LastVisibleMessage} from './ReportActionsUtils'; +import type {LastVisibleMessage} from './ReportActionsUtils'; import * as TransactionUtils from './TransactionUtils'; import * as Url from './Url'; import * as UserUtils from './UserUtils'; diff --git a/src/libs/Request.ts b/src/libs/Request.ts index 18fadca467ad..aa94eccbca2e 100644 --- a/src/libs/Request.ts +++ b/src/libs/Request.ts @@ -1,7 +1,7 @@ -import Request from '@src/types/onyx/Request'; -import Response from '@src/types/onyx/Response'; +import type Request from '@src/types/onyx/Request'; +import type Response from '@src/types/onyx/Response'; import HttpUtils from './HttpUtils'; -import Middleware from './Middleware/types'; +import type Middleware from './Middleware/types'; import enhanceParameters from './Network/enhanceParameters'; import * as NetworkStore from './Network/NetworkStore'; diff --git a/src/libs/SelectionScraper/index.native.ts b/src/libs/SelectionScraper/index.native.ts index 7712906f05e6..aeb9c5ae3ce2 100644 --- a/src/libs/SelectionScraper/index.native.ts +++ b/src/libs/SelectionScraper/index.native.ts @@ -1,4 +1,4 @@ -import GetCurrentSelection from './types'; +import type GetCurrentSelection from './types'; // This is a no-op function for native devices because they wouldn't be able to support Selection API like a website. const getCurrentSelection: GetCurrentSelection = () => ''; diff --git a/src/libs/SelectionScraper/index.ts b/src/libs/SelectionScraper/index.ts index 01b9db4b4a43..ebd06a342a51 100644 --- a/src/libs/SelectionScraper/index.ts +++ b/src/libs/SelectionScraper/index.ts @@ -1,9 +1,10 @@ import render from 'dom-serializer'; -import {DataNode, Element, Node} from 'domhandler'; +import type { Node} from 'domhandler'; +import {DataNode, Element} from 'domhandler'; import Str from 'expensify-common/lib/str'; import {parseDocument} from 'htmlparser2'; import CONST from '@src/CONST'; -import GetCurrentSelection from './types'; +import type GetCurrentSelection from './types'; const markdownElements = ['h1', 'strong', 'em', 'del', 'blockquote', 'q', 'code', 'pre', 'a', 'br', 'li', 'ul', 'ol', 'b', 'i', 's']; const tagAttribute = 'data-testid'; diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 0a776645a393..db16cf5cb552 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -1,15 +1,17 @@ /* eslint-disable rulesdir/prefer-underscore-method */ import Str from 'expensify-common/lib/str'; -import Onyx, {OnyxCollection} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PersonalDetails} from '@src/types/onyx'; -import Beta from '@src/types/onyx/Beta'; -import * as OnyxCommon from '@src/types/onyx/OnyxCommon'; -import Policy from '@src/types/onyx/Policy'; -import Report from '@src/types/onyx/Report'; -import ReportAction, {ReportActions} from '@src/types/onyx/ReportAction'; +import type {PersonalDetails} from '@src/types/onyx'; +import type Beta from '@src/types/onyx/Beta'; +import type * as OnyxCommon from '@src/types/onyx/OnyxCommon'; +import type Policy from '@src/types/onyx/Policy'; +import type Report from '@src/types/onyx/Report'; +import type {ReportActions} from '@src/types/onyx/ReportAction'; +import type ReportAction from '@src/types/onyx/ReportAction'; import * as CollectionUtils from './CollectionUtils'; import * as LocalePhoneNumber from './LocalePhoneNumber'; import * as Localize from './Localize'; diff --git a/src/libs/StartupTimer/index.native.ts b/src/libs/StartupTimer/index.native.ts index 52ba55076fc1..8aa185d81146 100644 --- a/src/libs/StartupTimer/index.native.ts +++ b/src/libs/StartupTimer/index.native.ts @@ -1,5 +1,5 @@ import {NativeModules} from 'react-native'; -import StartupTimer from './types'; +import type StartupTimer from './types'; /** * Stop the startup trace for the app. diff --git a/src/libs/StartupTimer/index.ts b/src/libs/StartupTimer/index.ts index 1cc656b329f4..85960bcce24b 100644 --- a/src/libs/StartupTimer/index.ts +++ b/src/libs/StartupTimer/index.ts @@ -1,7 +1,7 @@ /** * Web noop as there is no "startup" to time from the native layer. */ -import StartupTimer from './types'; +import type StartupTimer from './types'; const startupTimer: StartupTimer = { stop: () => {}, diff --git a/src/libs/TaskUtils.ts b/src/libs/TaskUtils.ts index 3026e33edc8c..da2727d29942 100644 --- a/src/libs/TaskUtils.ts +++ b/src/libs/TaskUtils.ts @@ -1,8 +1,9 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Report} from '@src/types/onyx'; -import ReportAction from '@src/types/onyx/ReportAction'; +import type {Report} from '@src/types/onyx'; +import type ReportAction from '@src/types/onyx/ReportAction'; import * as CollectionUtils from './CollectionUtils'; import * as Localize from './Localize'; diff --git a/src/libs/TransactionUtils.ts b/src/libs/TransactionUtils.ts index 615bea7ff18d..c34a6753c1d5 100644 --- a/src/libs/TransactionUtils.ts +++ b/src/libs/TransactionUtils.ts @@ -1,12 +1,14 @@ import lodashHas from 'lodash/has'; -import Onyx, {OnyxCollection, OnyxEntry} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {RecentWaypoint, Report, ReportAction, Transaction} from '@src/types/onyx'; -import PolicyTaxRate, {PolicyTaxRates} from '@src/types/onyx/PolicyTaxRates'; -import {Comment, Receipt, Waypoint, WaypointCollection} from '@src/types/onyx/Transaction'; -import {EmptyObject} from '@src/types/utils/EmptyObject'; +import type {RecentWaypoint, Report, ReportAction, Transaction} from '@src/types/onyx'; +import type {PolicyTaxRates} from '@src/types/onyx/PolicyTaxRates'; +import type PolicyTaxRate from '@src/types/onyx/PolicyTaxRates'; +import type {Comment, Receipt, Waypoint, WaypointCollection} from '@src/types/onyx/Transaction'; +import type {EmptyObject} from '@src/types/utils/EmptyObject'; import {isCorporateCard, isExpensifyCard} from './CardUtils'; import DateUtils from './DateUtils'; import * as NumberUtils from './NumberUtils'; diff --git a/src/libs/Trie/index.ts b/src/libs/Trie/index.ts index c3c5aa4bbf3f..c23c7b814a22 100644 --- a/src/libs/Trie/index.ts +++ b/src/libs/Trie/index.ts @@ -1,4 +1,5 @@ -import TrieNode, {MetaData} from './TrieNode'; +import type {MetaData} from './TrieNode'; +import TrieNode from './TrieNode'; type Word = { name: string; diff --git a/src/libs/UnreadIndicatorUpdater/index.ts b/src/libs/UnreadIndicatorUpdater/index.ts index da45057bc46d..4126f2af4e83 100644 --- a/src/libs/UnreadIndicatorUpdater/index.ts +++ b/src/libs/UnreadIndicatorUpdater/index.ts @@ -1,8 +1,9 @@ -import Onyx, {OnyxCollection} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import * as ReportUtils from '@libs/ReportUtils'; import Navigation, {navigationRef} from '@navigation/Navigation'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Report} from '@src/types/onyx'; +import type {Report} from '@src/types/onyx'; import updateUnread from './updateUnread'; let allReports: OnyxCollection = {}; diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts index bd7b2cbc4752..2c79573ef906 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.android.ts @@ -1,4 +1,4 @@ -import UpdateUnread from './types'; +import type UpdateUnread from './types'; // Android does not yet implement this const updateUnread: UpdateUnread = () => {}; diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.desktop.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.desktop.ts index e5d2fca43bf4..5cbba61542b1 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.desktop.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.desktop.ts @@ -1,5 +1,5 @@ import ELECTRON_EVENTS from '../../../../desktop/ELECTRON_EVENTS'; -import UpdateUnread from './types'; +import type UpdateUnread from './types'; /** * Set the badge on desktop diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts index d6fac7c7771d..fcaa1cf57502 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ios.ts @@ -1,5 +1,5 @@ import Airship from '@ua/react-native-airship'; -import UpdateUnread from './types'; +import type UpdateUnread from './types'; /** * Set the App Icon badge with the number of diff --git a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts index 46015f4e5e03..8e5f7d971903 100644 --- a/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts +++ b/src/libs/UnreadIndicatorUpdater/updateUnread/index.ts @@ -2,7 +2,7 @@ * Web browsers have a tab title and favicon which can be updated to show there are unread comments */ import CONFIG from '@src/CONFIG'; -import UpdateUnread from './types'; +import type UpdateUnread from './types'; let unreadTotalCount = 0; /** diff --git a/src/libs/UserUtils.ts b/src/libs/UserUtils.ts index 15ae6cce2a6d..018bb87cc3a2 100644 --- a/src/libs/UserUtils.ts +++ b/src/libs/UserUtils.ts @@ -1,14 +1,15 @@ import Str from 'expensify-common/lib/str'; import _ from 'lodash'; -import Onyx, {OnyxEntry} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import * as defaultAvatars from '@components/Icon/DefaultAvatars'; import {ConciergeAvatar, FallbackAvatar} from '@components/Icon/Expensicons'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PersonalDetailsList} from '@src/types/onyx'; -import Login from '@src/types/onyx/Login'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {PersonalDetailsList} from '@src/types/onyx'; +import type Login from '@src/types/onyx/Login'; +import type IconAsset from '@src/types/utils/IconAsset'; import hashCode from './hashCode'; type AvatarRange = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24; diff --git a/src/libs/ValidationUtils.ts b/src/libs/ValidationUtils.ts index ba977312fcfb..4b973d95d136 100644 --- a/src/libs/ValidationUtils.ts +++ b/src/libs/ValidationUtils.ts @@ -5,8 +5,8 @@ import isDate from 'lodash/isDate'; import isEmpty from 'lodash/isEmpty'; import isObject from 'lodash/isObject'; import CONST from '@src/CONST'; -import {Report} from '@src/types/onyx'; -import * as OnyxCommon from '@src/types/onyx/OnyxCommon'; +import type {Report} from '@src/types/onyx'; +import type * as OnyxCommon from '@src/types/onyx/OnyxCommon'; import * as CardUtils from './CardUtils'; import DateUtils from './DateUtils'; import * as LoginUtils from './LoginUtils'; diff --git a/src/libs/ViolationsUtils.ts b/src/libs/ViolationsUtils.ts index 4cfa259c9e78..748f0ed86b7f 100644 --- a/src/libs/ViolationsUtils.ts +++ b/src/libs/ViolationsUtils.ts @@ -1,7 +1,7 @@ import reject from 'lodash/reject'; import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; +import type {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; const ViolationsUtils = { /** diff --git a/src/libs/Visibility/index.desktop.ts b/src/libs/Visibility/index.desktop.ts index bdc8b9a4267a..c01b6001f456 100644 --- a/src/libs/Visibility/index.desktop.ts +++ b/src/libs/Visibility/index.desktop.ts @@ -1,5 +1,5 @@ import ELECTRON_EVENTS from '../../../desktop/ELECTRON_EVENTS'; -import {HasFocus, IsVisible, OnVisibilityChange} from './types'; +import type {HasFocus, IsVisible, OnVisibilityChange} from './types'; /** * Detects whether the app is visible or not. Electron supports document.visibilityState, diff --git a/src/libs/Visibility/index.native.ts b/src/libs/Visibility/index.native.ts index 42bd56531207..bedcce101d61 100644 --- a/src/libs/Visibility/index.native.ts +++ b/src/libs/Visibility/index.native.ts @@ -1,7 +1,7 @@ // Mobile apps do not require this check for visibility as // they do not use the Notification lib. import {AppState} from 'react-native'; -import {HasFocus, IsVisible, OnVisibilityChange} from './types'; +import type {HasFocus, IsVisible, OnVisibilityChange} from './types'; const isVisible: IsVisible = () => AppState.currentState === 'active'; diff --git a/src/libs/Visibility/index.ts b/src/libs/Visibility/index.ts index 4cf18b010a07..e7556fa22eb4 100644 --- a/src/libs/Visibility/index.ts +++ b/src/libs/Visibility/index.ts @@ -1,5 +1,5 @@ import {AppState} from 'react-native'; -import {HasFocus, IsVisible, OnVisibilityChange} from './types'; +import type {HasFocus, IsVisible, OnVisibilityChange} from './types'; /** * Detects whether the app is visible or not. diff --git a/src/libs/VisualViewport/index.native.ts b/src/libs/VisualViewport/index.native.ts index a50b080d9aab..6b6d3338f472 100644 --- a/src/libs/VisualViewport/index.native.ts +++ b/src/libs/VisualViewport/index.native.ts @@ -1,4 +1,4 @@ -import AddViewportResizeListener from './types'; +import type AddViewportResizeListener from './types'; /** * Visual Viewport is not available on native, so return an empty function. diff --git a/src/libs/VisualViewport/index.ts b/src/libs/VisualViewport/index.ts index e24d42f272a4..78a4743c9fa7 100644 --- a/src/libs/VisualViewport/index.ts +++ b/src/libs/VisualViewport/index.ts @@ -1,4 +1,4 @@ -import AddViewportResizeListener from './types'; +import type AddViewportResizeListener from './types'; /** * Add a visual viewport resize listener if available. Return a function to remove the listener. diff --git a/src/libs/__mocks__/Permissions.ts b/src/libs/__mocks__/Permissions.ts index 4f47c0b756b7..759392bde2c6 100644 --- a/src/libs/__mocks__/Permissions.ts +++ b/src/libs/__mocks__/Permissions.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import Beta from '@src/types/onyx/Beta'; +import type Beta from '@src/types/onyx/Beta'; /** * This module is mocked in tests because all the permission methods call canUseAllBetas() and that will diff --git a/src/libs/actions/App.ts b/src/libs/actions/App.ts index ec43d4358134..dc816ebce8cb 100644 --- a/src/libs/actions/App.ts +++ b/src/libs/actions/App.ts @@ -1,8 +1,10 @@ // Issue - https://github.com/Expensify/App/issues/26719 import Str from 'expensify-common/lib/str'; -import {AppState, AppStateStatus} from 'react-native'; -import Onyx, {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type { AppStateStatus} from 'react-native'; +import {AppState} from 'react-native'; +import type {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import * as API from '@libs/API'; import * as Browser from '@libs/Browser'; import Log from '@libs/Log'; @@ -13,9 +15,10 @@ import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as SessionUtils from '@libs/SessionUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES, {Route} from '@src/ROUTES'; -import * as OnyxTypes from '@src/types/onyx'; -import {SelectedTimezone} from '@src/types/onyx/PersonalDetails'; +import type {Route} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; +import type * as OnyxTypes from '@src/types/onyx'; +import type {SelectedTimezone} from '@src/types/onyx/PersonalDetails'; import type {OnyxData} from '@src/types/onyx/Request'; import * as Policy from './Policy'; import * as Session from './Session'; diff --git a/src/libs/actions/Chronos.ts b/src/libs/actions/Chronos.ts index 76308f225fe4..0bb949687e6d 100644 --- a/src/libs/actions/Chronos.ts +++ b/src/libs/actions/Chronos.ts @@ -1,8 +1,9 @@ -import Onyx, {OnyxUpdate} from 'react-native-onyx'; +import type {OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import * as API from '@libs/API'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {ChronosOOOEvent} from '@src/types/onyx/OriginalMessage'; +import type {ChronosOOOEvent} from '@src/types/onyx/OriginalMessage'; const removeEvent = (reportID: string, reportActionID: string, eventID: string, events: ChronosOOOEvent[]) => { const optimisticData: OnyxUpdate[] = [ diff --git a/src/libs/actions/Device/generateDeviceID/index.android.ts b/src/libs/actions/Device/generateDeviceID/index.android.ts index 5fadc63ac3ba..d662967a9f76 100644 --- a/src/libs/actions/Device/generateDeviceID/index.android.ts +++ b/src/libs/actions/Device/generateDeviceID/index.android.ts @@ -1,6 +1,6 @@ import Str from 'expensify-common/lib/str'; import DeviceInfo from 'react-native-device-info'; -import GenerateDeviceID from './types'; +import type GenerateDeviceID from './types'; const deviceID = DeviceInfo.getDeviceId(); const uniqueID = Str.guid(deviceID); diff --git a/src/libs/actions/Device/generateDeviceID/index.desktop.ts b/src/libs/actions/Device/generateDeviceID/index.desktop.ts index a5e1acdc40fd..f8af0a7faa81 100644 --- a/src/libs/actions/Device/generateDeviceID/index.desktop.ts +++ b/src/libs/actions/Device/generateDeviceID/index.desktop.ts @@ -1,5 +1,5 @@ import ELECTRON_EVENTS from '../../../../../desktop/ELECTRON_EVENTS'; -import GenerateDeviceID from './types'; +import type GenerateDeviceID from './types'; /** * Get the unique ID of the current device. This should remain the same even if the user uninstalls and reinstalls the app. diff --git a/src/libs/actions/Device/generateDeviceID/index.ios.ts b/src/libs/actions/Device/generateDeviceID/index.ios.ts index 6567ffffb8d3..a63d176a77d1 100644 --- a/src/libs/actions/Device/generateDeviceID/index.ios.ts +++ b/src/libs/actions/Device/generateDeviceID/index.ios.ts @@ -1,5 +1,5 @@ import DeviceInfo from 'react-native-device-info'; -import GenerateDeviceID from './types'; +import type GenerateDeviceID from './types'; const deviceID = DeviceInfo.getDeviceId(); diff --git a/src/libs/actions/Device/generateDeviceID/index.ts b/src/libs/actions/Device/generateDeviceID/index.ts index b7011b7bb2d9..82ea72ba8180 100644 --- a/src/libs/actions/Device/generateDeviceID/index.ts +++ b/src/libs/actions/Device/generateDeviceID/index.ts @@ -1,5 +1,5 @@ import Str from 'expensify-common/lib/str'; -import GenerateDeviceID from './types'; +import type GenerateDeviceID from './types'; const uniqueID = Str.guid(); diff --git a/src/libs/actions/Device/getDeviceInfo/getBaseInfo.ts b/src/libs/actions/Device/getDeviceInfo/getBaseInfo.ts index aa5ef00815d2..28dc7b10c8d0 100644 --- a/src/libs/actions/Device/getDeviceInfo/getBaseInfo.ts +++ b/src/libs/actions/Device/getDeviceInfo/getBaseInfo.ts @@ -1,5 +1,5 @@ import packageConfig from '../../../../../package.json'; -import {GetBaseInfo} from './types'; +import type {GetBaseInfo} from './types'; const getBaseInfo: GetBaseInfo = () => ({ appVersion: packageConfig.version, diff --git a/src/libs/actions/Device/getDeviceInfo/getOSAndName/index.native.ts b/src/libs/actions/Device/getDeviceInfo/getOSAndName/index.native.ts index bfce98b1c65e..16a48348df71 100644 --- a/src/libs/actions/Device/getDeviceInfo/getOSAndName/index.native.ts +++ b/src/libs/actions/Device/getDeviceInfo/getOSAndName/index.native.ts @@ -1,6 +1,6 @@ import Str from 'expensify-common/lib/str'; import RNDeviceInfo from 'react-native-device-info'; -import {GetOSAndName} from './types'; +import type {GetOSAndName} from './types'; const getOSAndName: GetOSAndName = () => { const deviceName = RNDeviceInfo.getDeviceNameSync(); diff --git a/src/libs/actions/Device/getDeviceInfo/index.android.ts b/src/libs/actions/Device/getDeviceInfo/index.android.ts index 6d8e9e497145..8ac243afa0dc 100644 --- a/src/libs/actions/Device/getDeviceInfo/index.android.ts +++ b/src/libs/actions/Device/getDeviceInfo/index.android.ts @@ -1,6 +1,6 @@ import getBaseInfo from './getBaseInfo'; import getOSAndName from './getOSAndName/index'; -import {GetDeviceInfo} from './types'; +import type {GetDeviceInfo} from './types'; const getDeviceInfo: GetDeviceInfo = () => ({ ...getBaseInfo(), diff --git a/src/libs/actions/Device/getDeviceInfo/index.desktop.ts b/src/libs/actions/Device/getDeviceInfo/index.desktop.ts index cb99de08ae93..51afe5805ce9 100644 --- a/src/libs/actions/Device/getDeviceInfo/index.desktop.ts +++ b/src/libs/actions/Device/getDeviceInfo/index.desktop.ts @@ -1,6 +1,6 @@ import getBaseInfo from './getBaseInfo'; import getOSAndName from './getOSAndName/index'; -import {GetDeviceInfo} from './types'; +import type {GetDeviceInfo} from './types'; const getDeviceInfo: GetDeviceInfo = () => ({ ...getBaseInfo(), diff --git a/src/libs/actions/Device/getDeviceInfo/index.ios.ts b/src/libs/actions/Device/getDeviceInfo/index.ios.ts index b91d5236a084..b4974807272a 100644 --- a/src/libs/actions/Device/getDeviceInfo/index.ios.ts +++ b/src/libs/actions/Device/getDeviceInfo/index.ios.ts @@ -1,6 +1,6 @@ import getBaseInfo from './getBaseInfo'; import getOSAndName from './getOSAndName/index'; -import {GetDeviceInfo} from './types'; +import type {GetDeviceInfo} from './types'; const getDeviceInfo: GetDeviceInfo = () => ({ ...getBaseInfo(), diff --git a/src/libs/actions/Device/getDeviceInfo/index.ts b/src/libs/actions/Device/getDeviceInfo/index.ts index b82aafc56cbe..cd4c02646367 100644 --- a/src/libs/actions/Device/getDeviceInfo/index.ts +++ b/src/libs/actions/Device/getDeviceInfo/index.ts @@ -1,6 +1,6 @@ import getBaseInfo from './getBaseInfo'; import getOSAndName from './getOSAndName/index'; -import {GetDeviceInfo} from './types'; +import type {GetDeviceInfo} from './types'; const getDeviceInfo: GetDeviceInfo = () => ({ ...getBaseInfo(), diff --git a/src/libs/actions/Device/getDeviceInfo/types.ts b/src/libs/actions/Device/getDeviceInfo/types.ts index 684ef68f1359..4262a02f84b0 100644 --- a/src/libs/actions/Device/getDeviceInfo/types.ts +++ b/src/libs/actions/Device/getDeviceInfo/types.ts @@ -1,4 +1,4 @@ -import {OSAndName} from './getOSAndName/types'; +import type {OSAndName} from './getOSAndName/types'; type BaseInfo = { appVersion: string; diff --git a/src/libs/actions/EmojiPickerAction.ts b/src/libs/actions/EmojiPickerAction.ts index 0f9dd4b727aa..064c52f9b7ef 100644 --- a/src/libs/actions/EmojiPickerAction.ts +++ b/src/libs/actions/EmojiPickerAction.ts @@ -1,7 +1,7 @@ import React from 'react'; -import {View} from 'react-native'; -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {View} from 'react-native'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type AnchorOrigin = { horizontal: ValueOf; diff --git a/src/libs/actions/FormActions.ts b/src/libs/actions/FormActions.ts index 29d9ecda9f73..6b73636e6d82 100644 --- a/src/libs/actions/FormActions.ts +++ b/src/libs/actions/FormActions.ts @@ -1,9 +1,9 @@ import Onyx from 'react-native-onyx'; -import {KeyValueMapping, NullishDeep} from 'react-native-onyx/lib/types'; +import type {KeyValueMapping, NullishDeep} from 'react-native-onyx/lib/types'; import FormUtils from '@libs/FormUtils'; -import {OnyxFormKey} from '@src/ONYXKEYS'; -import {Form} from '@src/types/onyx'; -import * as OnyxCommon from '@src/types/onyx/OnyxCommon'; +import type {OnyxFormKey} from '@src/ONYXKEYS'; +import type {Form} from '@src/types/onyx'; +import type * as OnyxCommon from '@src/types/onyx/OnyxCommon'; type ExcludeDraft = T extends `${string}Draft` ? never : T; type OnyxFormKeyWithoutDraft = ExcludeDraft; diff --git a/src/libs/actions/Link.ts b/src/libs/actions/Link.ts index e6d33fec118d..2fb863467e32 100644 --- a/src/libs/actions/Link.ts +++ b/src/libs/actions/Link.ts @@ -7,7 +7,8 @@ import * as Url from '@libs/Url'; import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES, {Route} from '@src/ROUTES'; +import type {Route} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; let isNetworkOffline = false; Onyx.connect({ diff --git a/src/libs/actions/MapboxToken.ts b/src/libs/actions/MapboxToken.ts index 4596e82a9354..42f8abf352f0 100644 --- a/src/libs/actions/MapboxToken.ts +++ b/src/libs/actions/MapboxToken.ts @@ -1,11 +1,12 @@ import {isAfter} from 'date-fns'; -import {AppState, NativeEventSubscription} from 'react-native'; +import type { NativeEventSubscription} from 'react-native'; +import {AppState} from 'react-native'; import Onyx from 'react-native-onyx'; import * as ActiveClientManager from '@libs/ActiveClientManager'; import * as API from '@libs/API'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {MapboxAccessToken, Network} from '@src/types/onyx'; +import type {MapboxAccessToken, Network} from '@src/types/onyx'; let authToken: string | null; Onyx.connect({ diff --git a/src/libs/actions/OnyxUpdates.ts b/src/libs/actions/OnyxUpdates.ts index bc407625dc6a..e1df544b4548 100644 --- a/src/libs/actions/OnyxUpdates.ts +++ b/src/libs/actions/OnyxUpdates.ts @@ -1,11 +1,12 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; -import {Merge} from 'type-fest'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {Merge} from 'type-fest'; import Log from '@libs/Log'; import PusherUtils from '@libs/PusherUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {OnyxUpdateEvent, OnyxUpdatesFromServer, Request} from '@src/types/onyx'; -import Response from '@src/types/onyx/Response'; +import type {OnyxUpdateEvent, OnyxUpdatesFromServer, Request} from '@src/types/onyx'; +import type Response from '@src/types/onyx/Response'; import * as QueuedOnyxUpdates from './QueuedOnyxUpdates'; // This key needs to be separate from ONYXKEYS.ONYX_UPDATES_FROM_SERVER so that it can be updated without triggering the callback when the server IDs are updated. If that diff --git a/src/libs/actions/PaymentMethods.ts b/src/libs/actions/PaymentMethods.ts index 3547a3053a02..a7ae54f46416 100644 --- a/src/libs/actions/PaymentMethods.ts +++ b/src/libs/actions/PaymentMethods.ts @@ -1,7 +1,8 @@ import {createRef} from 'react'; -import Onyx, {OnyxUpdate} from 'react-native-onyx'; -import {OnyxEntry} from 'react-native-onyx/lib/types'; -import {ValueOf} from 'type-fest'; +import type {OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx/lib/types'; +import type {ValueOf} from 'type-fest'; import * as API from '@libs/API'; import * as CardUtils from '@libs/CardUtils'; import Navigation from '@libs/Navigation/Navigation'; @@ -9,8 +10,8 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type {BankAccountList, FundList} from '@src/types/onyx'; -import PaymentMethod from '@src/types/onyx/PaymentMethod'; -import {FilterMethodPaymentType} from '@src/types/onyx/WalletTransfer'; +import type PaymentMethod from '@src/types/onyx/PaymentMethod'; +import type {FilterMethodPaymentType} from '@src/types/onyx/WalletTransfer'; type KYCWallRef = { continueAction?: () => void; diff --git a/src/libs/actions/PersistedRequests.ts b/src/libs/actions/PersistedRequests.ts index 22242ed6cbc5..fcc6450c6072 100644 --- a/src/libs/actions/PersistedRequests.ts +++ b/src/libs/actions/PersistedRequests.ts @@ -1,7 +1,7 @@ import isEqual from 'lodash/isEqual'; import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Request} from '@src/types/onyx'; +import type {Request} from '@src/types/onyx'; let persistedRequests: Request[] = []; diff --git a/src/libs/actions/PersonalDetails.ts b/src/libs/actions/PersonalDetails.ts index ff919f312987..20c6d8fef247 100644 --- a/src/libs/actions/PersonalDetails.ts +++ b/src/libs/actions/PersonalDetails.ts @@ -1,7 +1,8 @@ import Str from 'expensify-common/lib/str'; -import Onyx, {OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import type {OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import * as API from '@libs/API'; -import {CustomRNImageManipulatorResult} from '@libs/cropOrRotateImage/types'; +import type {CustomRNImageManipulatorResult} from '@libs/cropOrRotateImage/types'; import * as LocalePhoneNumber from '@libs/LocalePhoneNumber'; import Navigation from '@libs/Navigation/Navigation'; import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; @@ -9,8 +10,8 @@ import * as UserUtils from '@libs/UserUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import {DateOfBirthForm, PersonalDetails, PersonalDetailsList, PrivatePersonalDetails} from '@src/types/onyx'; -import {SelectedTimezone, Timezone} from '@src/types/onyx/PersonalDetails'; +import type {DateOfBirthForm, PersonalDetails, PersonalDetailsList, PrivatePersonalDetails} from '@src/types/onyx'; +import type {SelectedTimezone, Timezone} from '@src/types/onyx/PersonalDetails'; type FirstAndLastName = { firstName: string; diff --git a/src/libs/actions/PriorityMode.ts b/src/libs/actions/PriorityMode.ts index d528c31d7453..1d38d09e08a1 100644 --- a/src/libs/actions/PriorityMode.ts +++ b/src/libs/actions/PriorityMode.ts @@ -1,10 +1,11 @@ import debounce from 'lodash/debounce'; -import Onyx, {OnyxCollection} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import * as CollectionUtils from '@libs/CollectionUtils'; import Log from '@libs/Log'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Report} from '@src/types/onyx'; +import type {Report} from '@src/types/onyx'; /** * This actions file is used to automatically switch a user into #focus mode when they exceed a certain number of reports. We do this primarily for performance reasons. diff --git a/src/libs/actions/QueuedOnyxUpdates.ts b/src/libs/actions/QueuedOnyxUpdates.ts index 1707bebd6cb2..83bc6652cb39 100644 --- a/src/libs/actions/QueuedOnyxUpdates.ts +++ b/src/libs/actions/QueuedOnyxUpdates.ts @@ -1,4 +1,5 @@ -import Onyx, {OnyxUpdate} from 'react-native-onyx'; +import type {OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; // In this file we manage a queue of Onyx updates while the SequentialQueue is processing. There are functions to get the updates and clear the queue after saving the updates in Onyx. diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index da0bfd9c058b..9b8e68168df7 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -3,10 +3,11 @@ import ExpensiMark from 'expensify-common/lib/ExpensiMark'; import Str from 'expensify-common/lib/str'; import isEmpty from 'lodash/isEmpty'; import {DeviceEventEmitter, InteractionManager} from 'react-native'; -import Onyx, {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; -import {NullishDeep} from 'react-native-onyx/lib/types'; -import {PartialDeep, ValueOf} from 'type-fest'; -import {Emoji} from '@assets/emojis/types'; +import type {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {NullishDeep} from 'react-native-onyx/lib/types'; +import type {PartialDeep, ValueOf} from 'type-fest'; +import type {Emoji} from '@assets/emojis/types'; import * as ActiveClientManager from '@libs/ActiveClientManager'; import * as API from '@libs/API'; import * as CollectionUtils from '@libs/CollectionUtils'; @@ -28,12 +29,16 @@ import Visibility from '@libs/Visibility'; import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES, {Route} from '@src/ROUTES'; -import {PersonalDetails, PersonalDetailsList, ReportActionReactions, ReportUserIsTyping} from '@src/types/onyx'; -import {Decision, OriginalMessageIOU} from '@src/types/onyx/OriginalMessage'; -import Report, {NotificationPreference, WriteCapability} from '@src/types/onyx/Report'; -import ReportAction, {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; -import {EmptyObject, isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; +import type {Route} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; +import type {PersonalDetails, PersonalDetailsList, ReportActionReactions, ReportUserIsTyping} from '@src/types/onyx'; +import type {Decision, OriginalMessageIOU} from '@src/types/onyx/OriginalMessage'; +import type {NotificationPreference, WriteCapability} from '@src/types/onyx/Report'; +import type Report from '@src/types/onyx/Report'; +import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; +import type ReportAction from '@src/types/onyx/ReportAction'; +import type {EmptyObject} from '@src/types/utils/EmptyObject'; +import { isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; import * as Session from './Session'; import * as Welcome from './Welcome'; diff --git a/src/libs/actions/ReportActions.ts b/src/libs/actions/ReportActions.ts index 7cd72fb4cd49..31f06a5f0372 100644 --- a/src/libs/actions/ReportActions.ts +++ b/src/libs/actions/ReportActions.ts @@ -3,7 +3,7 @@ import * as ReportActionUtils from '@libs/ReportActionsUtils'; import * as ReportUtils from '@libs/ReportUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ReportAction from '@src/types/onyx/ReportAction'; +import type ReportAction from '@src/types/onyx/ReportAction'; import * as Report from './Report'; function clearReportActionErrors(reportID: string, reportAction: ReportAction) { diff --git a/src/libs/actions/Session/clearCache/index.native.ts b/src/libs/actions/Session/clearCache/index.native.ts index ce2e6beafa9f..a89c5f4d4a1e 100644 --- a/src/libs/actions/Session/clearCache/index.native.ts +++ b/src/libs/actions/Session/clearCache/index.native.ts @@ -1,5 +1,5 @@ import {CachesDirectoryPath, unlink} from 'react-native-fs'; -import ClearCache from './types'; +import type ClearCache from './types'; // `unlink` is used to delete the caches directory const clearStorage: ClearCache = () => unlink(CachesDirectoryPath); diff --git a/src/libs/actions/Session/clearCache/index.ts b/src/libs/actions/Session/clearCache/index.ts index 2722d8636a75..6d288c6cbd3b 100644 --- a/src/libs/actions/Session/clearCache/index.ts +++ b/src/libs/actions/Session/clearCache/index.ts @@ -1,4 +1,4 @@ -import ClearCache from './types'; +import type ClearCache from './types'; const clearStorage: ClearCache = () => new Promise((res) => res()); diff --git a/src/libs/actions/Session/index.ts b/src/libs/actions/Session/index.ts index a667e054fb92..67f531bff505 100644 --- a/src/libs/actions/Session/index.ts +++ b/src/libs/actions/Session/index.ts @@ -1,9 +1,10 @@ import throttle from 'lodash/throttle'; -import {ChannelAuthorizationData} from 'pusher-js/types/src/core/auth/options'; -import {ChannelAuthorizationCallback} from 'pusher-js/with-encryption'; +import type {ChannelAuthorizationData} from 'pusher-js/types/src/core/auth/options'; +import type {ChannelAuthorizationCallback} from 'pusher-js/with-encryption'; import {Linking} from 'react-native'; -import Onyx, {OnyxUpdate} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; +import type {OnyxUpdate} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; import * as PersistedRequests from '@libs/actions/PersistedRequests'; import * as API from '@libs/API'; import * as Authentication from '@libs/Authentication'; @@ -30,8 +31,8 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; -import Credentials from '@src/types/onyx/Credentials'; -import {AutoAuthState} from '@src/types/onyx/Session'; +import type Credentials from '@src/types/onyx/Credentials'; +import type {AutoAuthState} from '@src/types/onyx/Session'; import clearCache from './clearCache'; let sessionAuthTokenType: string | null = ''; diff --git a/src/libs/actions/SignInRedirect.ts b/src/libs/actions/SignInRedirect.ts index 6c9e7f55d887..ecb09ccd1804 100644 --- a/src/libs/actions/SignInRedirect.ts +++ b/src/libs/actions/SignInRedirect.ts @@ -1,6 +1,7 @@ import Onyx from 'react-native-onyx'; import * as ErrorUtils from '@libs/ErrorUtils'; -import ONYXKEYS, {OnyxKey} from '@src/ONYXKEYS'; +import type {OnyxKey} from '@src/ONYXKEYS'; +import ONYXKEYS from '@src/ONYXKEYS'; let currentIsOffline: boolean | undefined; let currentShouldForceOffline: boolean | undefined; diff --git a/src/libs/actions/Transaction.ts b/src/libs/actions/Transaction.ts index 951851d72eb3..c0702e49bdbf 100644 --- a/src/libs/actions/Transaction.ts +++ b/src/libs/actions/Transaction.ts @@ -7,9 +7,9 @@ import * as CollectionUtils from '@libs/CollectionUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {RecentWaypoint, Transaction} from '@src/types/onyx'; -import {OnyxData} from '@src/types/onyx/Request'; -import {WaypointCollection} from '@src/types/onyx/Transaction'; +import type {RecentWaypoint, Transaction} from '@src/types/onyx'; +import type {OnyxData} from '@src/types/onyx/Request'; +import type {WaypointCollection} from '@src/types/onyx/Transaction'; import * as IOU from './IOU'; let recentWaypoints: RecentWaypoint[] = []; diff --git a/src/libs/actions/TwoFactorAuthActions.ts b/src/libs/actions/TwoFactorAuthActions.ts index 26e402096aa6..c4b74836f9db 100644 --- a/src/libs/actions/TwoFactorAuthActions.ts +++ b/src/libs/actions/TwoFactorAuthActions.ts @@ -1,8 +1,9 @@ import Onyx from 'react-native-onyx'; import Navigation from '@libs/Navigation/Navigation'; import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES, {Route} from '@src/ROUTES'; -import {TwoFactorAuthStep} from '@src/types/onyx/Account'; +import type {Route} from '@src/ROUTES'; +import ROUTES from '@src/ROUTES'; +import type {TwoFactorAuthStep} from '@src/types/onyx/Account'; /** * Clear 2FA data if the flow is interrupted without finishing diff --git a/src/libs/actions/UserLocation.ts b/src/libs/actions/UserLocation.ts index 4c58f7a83284..699b701904e4 100644 --- a/src/libs/actions/UserLocation.ts +++ b/src/libs/actions/UserLocation.ts @@ -1,6 +1,6 @@ import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import {UserLocation} from '@src/types/onyx'; +import type {UserLocation} from '@src/types/onyx'; /** * Sets the longitude and latitude of user's current location diff --git a/src/libs/actions/Welcome.ts b/src/libs/actions/Welcome.ts index 02109804efb9..5046449c7389 100644 --- a/src/libs/actions/Welcome.ts +++ b/src/libs/actions/Welcome.ts @@ -1,12 +1,13 @@ -import Onyx, {OnyxCollection} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import Navigation from '@libs/Navigation/Navigation'; import * as ReportUtils from '@libs/ReportUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; -import OnyxPolicy from '@src/types/onyx/Policy'; -import Report from '@src/types/onyx/Report'; +import type OnyxPolicy from '@src/types/onyx/Policy'; +import type Report from '@src/types/onyx/Report'; import * as Policy from './Policy'; let resolveIsReadyPromise: (value?: Promise) => void | undefined; diff --git a/src/libs/asyncOpenURL/index.ts b/src/libs/asyncOpenURL/index.ts index 5307049ee923..8fca6891e9d6 100644 --- a/src/libs/asyncOpenURL/index.ts +++ b/src/libs/asyncOpenURL/index.ts @@ -1,5 +1,5 @@ import {Linking} from 'react-native'; -import AsyncOpenURL from './types'; +import type AsyncOpenURL from './types'; const asyncOpenURL: AsyncOpenURL = (promise, url) => { if (!url) { diff --git a/src/libs/asyncOpenURL/index.website.ts b/src/libs/asyncOpenURL/index.website.ts index d503644c1392..b781c4f605cb 100644 --- a/src/libs/asyncOpenURL/index.website.ts +++ b/src/libs/asyncOpenURL/index.website.ts @@ -1,5 +1,5 @@ import {Linking} from 'react-native'; -import AsyncOpenURL from './types'; +import type AsyncOpenURL from './types'; /** * Prevents Safari from blocking pop-up window when opened within async call. diff --git a/src/libs/calculateAnchorPosition.ts b/src/libs/calculateAnchorPosition.ts index b9d0f553ca4f..66966b7b504c 100644 --- a/src/libs/calculateAnchorPosition.ts +++ b/src/libs/calculateAnchorPosition.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ -import {View} from 'react-native'; -import {ValueOf} from 'type-fest'; +import type {View} from 'react-native'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import type {AnchorPosition} from '@src/styles'; diff --git a/src/libs/canFocusInputOnScreenFocus/index.native.ts b/src/libs/canFocusInputOnScreenFocus/index.native.ts index 79d711c49fa6..d8a093573387 100644 --- a/src/libs/canFocusInputOnScreenFocus/index.native.ts +++ b/src/libs/canFocusInputOnScreenFocus/index.native.ts @@ -1,4 +1,4 @@ -import CanFocusInputOnScreenFocus from './types'; +import type CanFocusInputOnScreenFocus from './types'; const canFocusInputOnScreenFocus: CanFocusInputOnScreenFocus = () => false; diff --git a/src/libs/canFocusInputOnScreenFocus/index.ts b/src/libs/canFocusInputOnScreenFocus/index.ts index 57baac02245d..65cebd43cfe0 100644 --- a/src/libs/canFocusInputOnScreenFocus/index.ts +++ b/src/libs/canFocusInputOnScreenFocus/index.ts @@ -1,5 +1,5 @@ import * as DeviceCapabilities from '@libs/DeviceCapabilities'; -import CanFocusInputOnScreenFocus from './types'; +import type CanFocusInputOnScreenFocus from './types'; const canFocusInputOnScreenFocus: CanFocusInputOnScreenFocus = () => !DeviceCapabilities.canUseTouchScreen(); diff --git a/src/libs/convertToLTR/index.android.ts b/src/libs/convertToLTR/index.android.ts index d73fd3de7a21..07f761752307 100644 --- a/src/libs/convertToLTR/index.android.ts +++ b/src/libs/convertToLTR/index.android.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import ConvertToLTR from './types'; +import type ConvertToLTR from './types'; /** * Android only - convert RTL text to a LTR text using Unicode controls. diff --git a/src/libs/convertToLTR/index.ts b/src/libs/convertToLTR/index.ts index 58d8be93836e..5c2df7c39c2c 100644 --- a/src/libs/convertToLTR/index.ts +++ b/src/libs/convertToLTR/index.ts @@ -1,4 +1,4 @@ -import ConvertToLTR from './types'; +import type ConvertToLTR from './types'; const convertToLTR: ConvertToLTR = (text) => text; diff --git a/src/libs/convertToLTRForComposer/index.android.ts b/src/libs/convertToLTRForComposer/index.android.ts index 09e7f2e5cd87..cf288142f464 100644 --- a/src/libs/convertToLTRForComposer/index.android.ts +++ b/src/libs/convertToLTRForComposer/index.android.ts @@ -1,4 +1,4 @@ -import ConvertToLTRForComposer from './types'; +import type ConvertToLTRForComposer from './types'; /** * Android only - Do not convert RTL text to a LTR text for input box using Unicode controls. diff --git a/src/libs/convertToLTRForComposer/index.ts b/src/libs/convertToLTRForComposer/index.ts index dd6ee50d862e..804f5a4cd7e5 100644 --- a/src/libs/convertToLTRForComposer/index.ts +++ b/src/libs/convertToLTRForComposer/index.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import ConvertToLTRForComposer from './types'; +import type ConvertToLTRForComposer from './types'; function hasRTLCharacters(text: string): boolean { // Regular expressions to match RTL character ranges. diff --git a/src/libs/cropOrRotateImage/index.native.ts b/src/libs/cropOrRotateImage/index.native.ts index 08a5ecb04f6b..c3fed59ba4fa 100644 --- a/src/libs/cropOrRotateImage/index.native.ts +++ b/src/libs/cropOrRotateImage/index.native.ts @@ -1,6 +1,6 @@ import RNImageManipulator from '@oguzhnatly/react-native-image-manipulator'; import RNFetchBlob from 'react-native-blob-util'; -import {CropOrRotateImage} from './types'; +import type {CropOrRotateImage} from './types'; /** * Crops and rotates the image on ios/android diff --git a/src/libs/cropOrRotateImage/index.ts b/src/libs/cropOrRotateImage/index.ts index a66ddbb40b00..ea3d51a465ec 100644 --- a/src/libs/cropOrRotateImage/index.ts +++ b/src/libs/cropOrRotateImage/index.ts @@ -1,4 +1,4 @@ -import {CropOptions, CropOrRotateImage, CropOrRotateImageOptions} from './types'; +import type {CropOptions, CropOrRotateImage, CropOrRotateImageOptions} from './types'; type SizeFromAngle = { width: number; diff --git a/src/libs/cropOrRotateImage/types.ts b/src/libs/cropOrRotateImage/types.ts index 188d557a1258..f882e4f9bea2 100644 --- a/src/libs/cropOrRotateImage/types.ts +++ b/src/libs/cropOrRotateImage/types.ts @@ -1,4 +1,4 @@ -import {RNImageManipulatorResult} from '@oguzhnatly/react-native-image-manipulator'; +import type {RNImageManipulatorResult} from '@oguzhnatly/react-native-image-manipulator'; type CropOrRotateImageOptions = { type: string; diff --git a/src/libs/fileDownload/getImageResolution.native.ts b/src/libs/fileDownload/getImageResolution.native.ts index 3bdff78a93ed..645148ef5194 100644 --- a/src/libs/fileDownload/getImageResolution.native.ts +++ b/src/libs/fileDownload/getImageResolution.native.ts @@ -1,4 +1,4 @@ -import {Asset} from 'react-native-image-picker'; +import type {Asset} from 'react-native-image-picker'; import type {GetImageResolution} from './types'; /** diff --git a/src/libs/fileDownload/index.android.ts b/src/libs/fileDownload/index.android.ts index 8496c1cb6cf5..577a42dd14a3 100644 --- a/src/libs/fileDownload/index.android.ts +++ b/src/libs/fileDownload/index.android.ts @@ -1,5 +1,6 @@ import {PermissionsAndroid, Platform} from 'react-native'; -import RNFetchBlob, {FetchBlobResponse} from 'react-native-blob-util'; +import type {FetchBlobResponse} from 'react-native-blob-util'; +import RNFetchBlob from 'react-native-blob-util'; import * as FileUtils from './FileUtils'; import type {FileDownload} from './types'; diff --git a/src/libs/fileDownload/types.ts b/src/libs/fileDownload/types.ts index c7388f2e52a2..bc8ba0807eb1 100644 --- a/src/libs/fileDownload/types.ts +++ b/src/libs/fileDownload/types.ts @@ -1,4 +1,4 @@ -import {Asset} from 'react-native-image-picker'; +import type {Asset} from 'react-native-image-picker'; type FileDownload = (url: string, fileName: string) => Promise; diff --git a/src/libs/focusAndUpdateMultilineInputRange.ts b/src/libs/focusAndUpdateMultilineInputRange.ts index 92da790e383f..2e4a3d23631e 100644 --- a/src/libs/focusAndUpdateMultilineInputRange.ts +++ b/src/libs/focusAndUpdateMultilineInputRange.ts @@ -1,4 +1,4 @@ -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; /** * Focus a multiline text input and place the cursor at the end of the value (if there is a value in the input). diff --git a/src/libs/focusComposerWithDelay.ts b/src/libs/focusComposerWithDelay.ts index 19f1050d24bd..6a2f85f7d311 100644 --- a/src/libs/focusComposerWithDelay.ts +++ b/src/libs/focusComposerWithDelay.ts @@ -1,4 +1,4 @@ -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; import * as EmojiPickerAction from './actions/EmojiPickerAction'; import ComposerFocusManager from './ComposerFocusManager'; diff --git a/src/libs/focusTextInputAfterAnimation/index.android.ts b/src/libs/focusTextInputAfterAnimation/index.android.ts index 5de1f1f4696b..31c748f5daa4 100644 --- a/src/libs/focusTextInputAfterAnimation/index.android.ts +++ b/src/libs/focusTextInputAfterAnimation/index.android.ts @@ -1,4 +1,4 @@ -import FocusTextInputAfterAnimation from './types'; +import type FocusTextInputAfterAnimation from './types'; /** * Initially this file is intended for native ios but use index.native.js filename and affects android. diff --git a/src/libs/focusTextInputAfterAnimation/index.ts b/src/libs/focusTextInputAfterAnimation/index.ts index 1e3211372b41..3f7c6555b5ce 100644 --- a/src/libs/focusTextInputAfterAnimation/index.ts +++ b/src/libs/focusTextInputAfterAnimation/index.ts @@ -1,4 +1,4 @@ -import FocusTextInputAfterAnimation from './types'; +import type FocusTextInputAfterAnimation from './types'; /** * This library is a no-op for all platforms except for Android and iOS and will immediately focus the given input without any delays. diff --git a/src/libs/focusTextInputAfterAnimation/types.ts b/src/libs/focusTextInputAfterAnimation/types.ts index 905ac7db4b7a..a6a14165598b 100644 --- a/src/libs/focusTextInputAfterAnimation/types.ts +++ b/src/libs/focusTextInputAfterAnimation/types.ts @@ -1,4 +1,4 @@ -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; type FocusTextInputAfterAnimation = (inputRef: TextInput | HTMLInputElement, animationLength: number) => void; diff --git a/src/libs/getButtonState.ts b/src/libs/getButtonState.ts index fe593b9f613e..fc0609ace1f6 100644 --- a/src/libs/getButtonState.ts +++ b/src/libs/getButtonState.ts @@ -1,4 +1,4 @@ -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; /** diff --git a/src/libs/getClickedTargetLocation/index.native.ts b/src/libs/getClickedTargetLocation/index.native.ts index 1755d4e4ac99..a07dd9a8d0da 100644 --- a/src/libs/getClickedTargetLocation/index.native.ts +++ b/src/libs/getClickedTargetLocation/index.native.ts @@ -1,4 +1,4 @@ -import GetClickedTargetLocation from './types'; +import type GetClickedTargetLocation from './types'; /** * We don't need to get the position of the element on native platforms because the popover will be bottom mounted diff --git a/src/libs/getClickedTargetLocation/index.ts b/src/libs/getClickedTargetLocation/index.ts index e218700c3355..f7d12995a2bf 100644 --- a/src/libs/getClickedTargetLocation/index.ts +++ b/src/libs/getClickedTargetLocation/index.ts @@ -1,4 +1,4 @@ -import GetClickedTargetLocation from './types'; +import type GetClickedTargetLocation from './types'; /** * Returns the Bounding Rectangle for the passed native event's target. diff --git a/src/libs/getComponentDisplayName.ts b/src/libs/getComponentDisplayName.ts index 0bf52d543a84..da5eef5212e0 100644 --- a/src/libs/getComponentDisplayName.ts +++ b/src/libs/getComponentDisplayName.ts @@ -1,4 +1,4 @@ -import {ComponentType} from 'react'; +import type {ComponentType} from 'react'; /** Returns the display name of a component */ export default function getComponentDisplayName(component: ComponentType): string { diff --git a/src/libs/getCurrentPosition/index.android.ts b/src/libs/getCurrentPosition/index.android.ts index b29483a5c672..77ecdf236149 100644 --- a/src/libs/getCurrentPosition/index.android.ts +++ b/src/libs/getCurrentPosition/index.android.ts @@ -2,7 +2,8 @@ // If we update our react native version, we need to test this file again import Geolocation from '@react-native-community/geolocation'; import RNAndroidLocationEnabler from 'react-native-android-location-enabler'; -import {GeolocationErrorCode, GetCurrentPosition} from './getCurrentPosition.types'; +import type { GetCurrentPosition} from './getCurrentPosition.types'; +import {GeolocationErrorCode} from './getCurrentPosition.types'; Geolocation.setRNConfiguration({ skipPermissionRequests: false, diff --git a/src/libs/getCurrentPosition/index.ios.ts b/src/libs/getCurrentPosition/index.ios.ts index fb513c4afd16..e64abb0d4329 100644 --- a/src/libs/getCurrentPosition/index.ios.ts +++ b/src/libs/getCurrentPosition/index.ios.ts @@ -1,5 +1,5 @@ import Geolocation from '@react-native-community/geolocation'; -import {GetCurrentPosition} from './getCurrentPosition.types'; +import type {GetCurrentPosition} from './getCurrentPosition.types'; Geolocation.setRNConfiguration({ skipPermissionRequests: false, diff --git a/src/libs/getCurrentPosition/index.ts b/src/libs/getCurrentPosition/index.ts index 11112b0682f8..2bfefe431892 100644 --- a/src/libs/getCurrentPosition/index.ts +++ b/src/libs/getCurrentPosition/index.ts @@ -1,4 +1,5 @@ -import {GeolocationErrorCode, GetCurrentPosition} from './getCurrentPosition.types'; +import type { GetCurrentPosition} from './getCurrentPosition.types'; +import {GeolocationErrorCode} from './getCurrentPosition.types'; const getCurrentPosition: GetCurrentPosition = (success, error, options) => { if (navigator === undefined || !('geolocation' in navigator)) { diff --git a/src/libs/getModalState.ts b/src/libs/getModalState.ts index 47aa0c406b29..8906718d9168 100644 --- a/src/libs/getModalState.ts +++ b/src/libs/getModalState.ts @@ -1,6 +1,7 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; -import Modal from '@src/types/onyx/Modal'; +import type Modal from '@src/types/onyx/Modal'; let modalState: OnyxEntry = {}; diff --git a/src/libs/getOperatingSystem/index.native.ts b/src/libs/getOperatingSystem/index.native.ts index f3e856cb14c9..67f27dcfec28 100644 --- a/src/libs/getOperatingSystem/index.native.ts +++ b/src/libs/getOperatingSystem/index.native.ts @@ -1,6 +1,6 @@ import {Platform} from 'react-native'; import CONST from '@src/CONST'; -import GetOperatingSystem from './types'; +import type GetOperatingSystem from './types'; /** * Reads the current operating system for native platforms. diff --git a/src/libs/getOperatingSystem/index.ts b/src/libs/getOperatingSystem/index.ts index 630595d97471..7e59a1f88b98 100644 --- a/src/libs/getOperatingSystem/index.ts +++ b/src/libs/getOperatingSystem/index.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import GetOperatingSystem from './types'; +import type GetOperatingSystem from './types'; /** * Reads the current operating system when running on Web/Mobile-Web/Desktop diff --git a/src/libs/getOperatingSystem/types.ts b/src/libs/getOperatingSystem/types.ts index a4b3046b4cd9..055ba488f760 100644 --- a/src/libs/getOperatingSystem/types.ts +++ b/src/libs/getOperatingSystem/types.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type OS = ValueOf | null; type GetOperatingSystem = () => OS; diff --git a/src/libs/getPermittedDecimalSeparator/index.ios.ts b/src/libs/getPermittedDecimalSeparator/index.ios.ts index f7c2d1eeaa9f..6ccbf48a5622 100644 --- a/src/libs/getPermittedDecimalSeparator/index.ios.ts +++ b/src/libs/getPermittedDecimalSeparator/index.ios.ts @@ -1,6 +1,6 @@ // On iOS keyboard can only have one symbol at a time (either dot or comma) so we accept both // Details: https://expensify.slack.com/archives/C01GTK53T8Q/p1658936908481629 -import GetPermittedDecimalSeparator from './types'; +import type GetPermittedDecimalSeparator from './types'; const getPermittedDecimalSeparator: GetPermittedDecimalSeparator = () => '.,'; diff --git a/src/libs/getPermittedDecimalSeparator/index.ts b/src/libs/getPermittedDecimalSeparator/index.ts index 120e9e046aff..ae9883729259 100644 --- a/src/libs/getPermittedDecimalSeparator/index.ts +++ b/src/libs/getPermittedDecimalSeparator/index.ts @@ -1,7 +1,7 @@ import getOperatingSystem from '@libs/getOperatingSystem'; import CONST from '@src/CONST'; import getPermittedDecimalSeparatorIOS from './index.ios'; -import GetPermittedDecimalSeparator from './types'; +import type GetPermittedDecimalSeparator from './types'; const getPermittedDecimalSeparator: GetPermittedDecimalSeparator = (localizedSeparator) => { if (getOperatingSystem() === CONST.OS.IOS) { diff --git a/src/libs/getPlaidDesktopMessage/index.desktop.ts b/src/libs/getPlaidDesktopMessage/index.desktop.ts index 93a336af8227..b43d6630d81b 100644 --- a/src/libs/getPlaidDesktopMessage/index.desktop.ts +++ b/src/libs/getPlaidDesktopMessage/index.desktop.ts @@ -1,4 +1,4 @@ -import GetPlaidDesktopMessage from './types'; +import type GetPlaidDesktopMessage from './types'; const getPlaidDesktopMessage: GetPlaidDesktopMessage = () => 'bankAccount.desktopConnection'; diff --git a/src/libs/getPlaidDesktopMessage/index.ts b/src/libs/getPlaidDesktopMessage/index.ts index deccb4df0ac2..ba40c7819222 100644 --- a/src/libs/getPlaidDesktopMessage/index.ts +++ b/src/libs/getPlaidDesktopMessage/index.ts @@ -1,4 +1,4 @@ -import GetPlaidDesktopMessage from './types'; +import type GetPlaidDesktopMessage from './types'; const getPlaidDesktopMessage: GetPlaidDesktopMessage = () => undefined; diff --git a/src/libs/getPlaidLinkTokenParameters/index.android.ts b/src/libs/getPlaidLinkTokenParameters/index.android.ts index c7e2aa8efd1e..f5caa28906c2 100644 --- a/src/libs/getPlaidLinkTokenParameters/index.android.ts +++ b/src/libs/getPlaidLinkTokenParameters/index.android.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import GetPlaidLinkTokenParameters from './types'; +import type GetPlaidLinkTokenParameters from './types'; const getPlaidLinkTokenParameters: GetPlaidLinkTokenParameters = () => ({ androidPackage: CONST.ANDROID_PACKAGE_NAME, diff --git a/src/libs/getPlaidLinkTokenParameters/index.ios.ts b/src/libs/getPlaidLinkTokenParameters/index.ios.ts index 8c69ddc71bb2..b15b7e92813a 100644 --- a/src/libs/getPlaidLinkTokenParameters/index.ios.ts +++ b/src/libs/getPlaidLinkTokenParameters/index.ios.ts @@ -1,5 +1,5 @@ import CONFIG from '@src/CONFIG'; -import GetPlaidLinkTokenParameters from './types'; +import type GetPlaidLinkTokenParameters from './types'; const getPlaidLinkTokenParameters: GetPlaidLinkTokenParameters = () => ({ redirectURI: `${CONFIG.EXPENSIFY.NEW_EXPENSIFY_URL}partners/plaid/oauth_ios`, diff --git a/src/libs/getPlaidLinkTokenParameters/index.ts b/src/libs/getPlaidLinkTokenParameters/index.ts index 570951e3d683..9218c7d37002 100644 --- a/src/libs/getPlaidLinkTokenParameters/index.ts +++ b/src/libs/getPlaidLinkTokenParameters/index.ts @@ -1,6 +1,6 @@ import CONFIG from '@src/CONFIG'; import ROUTES from '@src/ROUTES'; -import GetPlaidLinkTokenParameters from './types'; +import type GetPlaidLinkTokenParameters from './types'; const getPlaidLinkTokenParameters: GetPlaidLinkTokenParameters = () => { const bankAccountRoute = window.location.href.includes('personal') ? ROUTES.BANK_ACCOUNT_PERSONAL : ROUTES.BANK_ACCOUNT; diff --git a/src/libs/getPlaidOAuthReceivedRedirectURI/index.native.ts b/src/libs/getPlaidOAuthReceivedRedirectURI/index.native.ts index c435d1799cb8..49660dd6f077 100644 --- a/src/libs/getPlaidOAuthReceivedRedirectURI/index.native.ts +++ b/src/libs/getPlaidOAuthReceivedRedirectURI/index.native.ts @@ -1,4 +1,4 @@ -import GetPlaidOAuthReceivedRedirectURI from './types'; +import type GetPlaidOAuthReceivedRedirectURI from './types'; const getPlaidOAuthReceivedRedirectURI: GetPlaidOAuthReceivedRedirectURI = () => null; diff --git a/src/libs/getPlaidOAuthReceivedRedirectURI/index.ts b/src/libs/getPlaidOAuthReceivedRedirectURI/index.ts index 8492a2d9c91e..c140d1c3339f 100644 --- a/src/libs/getPlaidOAuthReceivedRedirectURI/index.ts +++ b/src/libs/getPlaidOAuthReceivedRedirectURI/index.ts @@ -1,4 +1,4 @@ -import GetPlaidOAuthReceivedRedirectURI from './types'; +import type GetPlaidOAuthReceivedRedirectURI from './types'; /** * After a user authenticates their bank in the Plaid OAuth flow, Plaid returns us to the redirectURI we diff --git a/src/libs/getPlatform/index.android.ts b/src/libs/getPlatform/index.android.ts index a0f4edb055af..a704f18ad11b 100644 --- a/src/libs/getPlatform/index.android.ts +++ b/src/libs/getPlatform/index.android.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import Platform from './types'; +import type Platform from './types'; export default function getPlatform(): Platform { return CONST.PLATFORM.ANDROID; diff --git a/src/libs/getPlatform/index.desktop.ts b/src/libs/getPlatform/index.desktop.ts index 0b90b5f121bb..4bf042159758 100644 --- a/src/libs/getPlatform/index.desktop.ts +++ b/src/libs/getPlatform/index.desktop.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import Platform from './types'; +import type Platform from './types'; export default function getPlatform(): Platform { return CONST.PLATFORM.DESKTOP; diff --git a/src/libs/getPlatform/index.ios.ts b/src/libs/getPlatform/index.ios.ts index ee35c8b610bc..9b7155b50cad 100644 --- a/src/libs/getPlatform/index.ios.ts +++ b/src/libs/getPlatform/index.ios.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import Platform from './types'; +import type Platform from './types'; export default function getPlatform(): Platform { return CONST.PLATFORM.IOS; diff --git a/src/libs/getPlatform/index.ts b/src/libs/getPlatform/index.ts index ca87e79170f5..5f5b45ac6e7d 100644 --- a/src/libs/getPlatform/index.ts +++ b/src/libs/getPlatform/index.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import Platform from './types'; +import type Platform from './types'; export default function getPlatform(): Platform { return CONST.PLATFORM.WEB; diff --git a/src/libs/getPlatform/types.ts b/src/libs/getPlatform/types.ts index 9c43c696a6f8..1ffc18f311de 100644 --- a/src/libs/getPlatform/types.ts +++ b/src/libs/getPlatform/types.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type Platform = ValueOf; diff --git a/src/libs/getSecureEntryKeyboardType/index.android.ts b/src/libs/getSecureEntryKeyboardType/index.android.ts index bc50e202381b..6cded09f1d49 100644 --- a/src/libs/getSecureEntryKeyboardType/index.android.ts +++ b/src/libs/getSecureEntryKeyboardType/index.android.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import GetSecureEntryKeyboardType from './types'; +import type GetSecureEntryKeyboardType from './types'; /** * Return visible-password keyboard type when secure text is visible on Android, diff --git a/src/libs/getSecureEntryKeyboardType/index.ts b/src/libs/getSecureEntryKeyboardType/index.ts index 030a88e60e84..1b8f5d9f20ba 100644 --- a/src/libs/getSecureEntryKeyboardType/index.ts +++ b/src/libs/getSecureEntryKeyboardType/index.ts @@ -1,4 +1,4 @@ -import GetSecureEntryKeyboardType from './types'; +import type GetSecureEntryKeyboardType from './types'; /** * Return keyboardType passed as function parameter on Web/Desktop/iOS diff --git a/src/libs/getSecureEntryKeyboardType/types.ts b/src/libs/getSecureEntryKeyboardType/types.ts index 750c84133ea2..3664d27cadec 100644 --- a/src/libs/getSecureEntryKeyboardType/types.ts +++ b/src/libs/getSecureEntryKeyboardType/types.ts @@ -1,4 +1,4 @@ -import {KeyboardTypeOptions} from 'react-native'; +import type {KeyboardTypeOptions} from 'react-native'; type GetSecureEntryKeyboardType = (keyboardType: KeyboardTypeOptions | undefined, secureTextEntry: boolean, passwordHidden: boolean) => KeyboardTypeOptions | undefined; diff --git a/src/libs/getWindowHeightAdjustment/index.android.ts b/src/libs/getWindowHeightAdjustment/index.android.ts index 1a06e663d4e3..6117e7ed4a8e 100644 --- a/src/libs/getWindowHeightAdjustment/index.android.ts +++ b/src/libs/getWindowHeightAdjustment/index.android.ts @@ -1,4 +1,4 @@ -import GetWindowHeightAdjustment from './types'; +import type GetWindowHeightAdjustment from './types'; // On Android the window height does not include the status bar height, so we need to add it manually. const getWindowHeightAdjustment: GetWindowHeightAdjustment = (insets) => insets?.top ?? 0; diff --git a/src/libs/getWindowHeightAdjustment/index.ts b/src/libs/getWindowHeightAdjustment/index.ts index 9a768d00cd4d..c8ca7f8b48df 100644 --- a/src/libs/getWindowHeightAdjustment/index.ts +++ b/src/libs/getWindowHeightAdjustment/index.ts @@ -1,4 +1,4 @@ -import GetWindowHeightAdjustment from './types'; +import type GetWindowHeightAdjustment from './types'; // Some platforms need to adjust the window height. const getWindowHeightAdjustment: GetWindowHeightAdjustment = () => 0; diff --git a/src/libs/getWindowHeightAdjustment/types.ts b/src/libs/getWindowHeightAdjustment/types.ts index ddb6723f6320..07d5c74bff27 100644 --- a/src/libs/getWindowHeightAdjustment/types.ts +++ b/src/libs/getWindowHeightAdjustment/types.ts @@ -1,4 +1,4 @@ -import {EdgeInsets} from 'react-native-safe-area-context'; +import type {EdgeInsets} from 'react-native-safe-area-context'; type GetWindowHeightAdjustment = (insets: EdgeInsets | null) => number; diff --git a/src/libs/isInputAutoFilled.ts b/src/libs/isInputAutoFilled.ts index fbe6240def47..a6dda57f41ec 100644 --- a/src/libs/isInputAutoFilled.ts +++ b/src/libs/isInputAutoFilled.ts @@ -1,4 +1,4 @@ -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; import isSelectorSupported from './isSelectorSupported'; /** diff --git a/src/libs/isReportMessageAttachment.ts b/src/libs/isReportMessageAttachment.ts index 097f46465dc9..df8a589f7bdc 100644 --- a/src/libs/isReportMessageAttachment.ts +++ b/src/libs/isReportMessageAttachment.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import {Message} from '@src/types/onyx/ReportAction'; +import type {Message} from '@src/types/onyx/ReportAction'; /** * Check whether a report action is Attachment or not. diff --git a/src/libs/isSelectorSupported/index.native.ts b/src/libs/isSelectorSupported/index.native.ts index fa846e1410d9..bd14cf3f5d07 100644 --- a/src/libs/isSelectorSupported/index.native.ts +++ b/src/libs/isSelectorSupported/index.native.ts @@ -1,4 +1,4 @@ -import IsSelectorSupported from './types'; +import type IsSelectorSupported from './types'; // Native platforms do not support the selector const isSelectorSupported: IsSelectorSupported = () => false; diff --git a/src/libs/isSelectorSupported/index.ts b/src/libs/isSelectorSupported/index.ts index 4f5f0313243e..7ed05fdc944e 100644 --- a/src/libs/isSelectorSupported/index.ts +++ b/src/libs/isSelectorSupported/index.ts @@ -1,4 +1,4 @@ -import IsSelectorSupported from './types'; +import type IsSelectorSupported from './types'; /** * Check platform supports the selector or not diff --git a/src/libs/localFileDownload/index.android.ts b/src/libs/localFileDownload/index.android.ts index 4de6cbd0e940..b6d8ea13738f 100644 --- a/src/libs/localFileDownload/index.android.ts +++ b/src/libs/localFileDownload/index.android.ts @@ -1,6 +1,6 @@ import RNFetchBlob from 'react-native-blob-util'; import * as FileUtils from '@libs/fileDownload/FileUtils'; -import LocalFileDownload from './types'; +import type LocalFileDownload from './types'; /** * Writes a local file to the app's internal directory with the given fileName diff --git a/src/libs/localFileDownload/index.ios.ts b/src/libs/localFileDownload/index.ios.ts index 5461c6ffc4c4..892ab29d21f5 100644 --- a/src/libs/localFileDownload/index.ios.ts +++ b/src/libs/localFileDownload/index.ios.ts @@ -1,7 +1,7 @@ import {Share} from 'react-native'; import RNFetchBlob from 'react-native-blob-util'; import * as FileUtils from '@libs/fileDownload/FileUtils'; -import LocalFileDownload from './types'; +import type LocalFileDownload from './types'; /** * Writes a local file to the app's internal directory with the given fileName diff --git a/src/libs/localFileDownload/index.ts b/src/libs/localFileDownload/index.ts index 2a70a01f88c0..ba038b8853ad 100644 --- a/src/libs/localFileDownload/index.ts +++ b/src/libs/localFileDownload/index.ts @@ -1,5 +1,5 @@ import * as FileUtils from '@libs/fileDownload/FileUtils'; -import LocalFileDownload from './types'; +import type LocalFileDownload from './types'; /** * Creates a Blob with the given fileName and textContent, then dynamically diff --git a/src/libs/migrations/CheckForPreviousReportActionID.ts b/src/libs/migrations/CheckForPreviousReportActionID.ts index 1f31a3586b0a..d97bd87f0a2a 100644 --- a/src/libs/migrations/CheckForPreviousReportActionID.ts +++ b/src/libs/migrations/CheckForPreviousReportActionID.ts @@ -1,7 +1,8 @@ -import Onyx, {OnyxCollection} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; import ONYXKEYS from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; function getReportActionsFromOnyx(): Promise> { return new Promise((resolve) => { diff --git a/src/libs/migrations/KeyReportActionsDraftByReportActionID.ts b/src/libs/migrations/KeyReportActionsDraftByReportActionID.ts index 1abe5a6114bb..dbf2829a6c28 100644 --- a/src/libs/migrations/KeyReportActionsDraftByReportActionID.ts +++ b/src/libs/migrations/KeyReportActionsDraftByReportActionID.ts @@ -1,7 +1,8 @@ -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; import ONYXKEYS from '@src/ONYXKEYS'; -import {ReportActionsDrafts} from '@src/types/onyx'; +import type {ReportActionsDrafts} from '@src/types/onyx'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; type ReportActionsDraftsKey = `${typeof ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS}${string}`; diff --git a/src/libs/migrations/RemoveEmptyReportActionsDrafts.ts b/src/libs/migrations/RemoveEmptyReportActionsDrafts.ts index d8816198e537..48493a82d641 100644 --- a/src/libs/migrations/RemoveEmptyReportActionsDrafts.ts +++ b/src/libs/migrations/RemoveEmptyReportActionsDrafts.ts @@ -1,8 +1,9 @@ import _ from 'lodash'; -import Onyx, {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; import ONYXKEYS from '@src/ONYXKEYS'; -import {ReportActionsDraft, ReportActionsDrafts} from '@src/types/onyx'; +import type {ReportActionsDraft, ReportActionsDrafts} from '@src/types/onyx'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; type ReportActionsDraftsKey = `${typeof ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS}${string}`; diff --git a/src/libs/migrations/RenameReceiptFilename.ts b/src/libs/migrations/RenameReceiptFilename.ts index b2c19848aedb..dff2be5c286d 100644 --- a/src/libs/migrations/RenameReceiptFilename.ts +++ b/src/libs/migrations/RenameReceiptFilename.ts @@ -1,8 +1,8 @@ import Onyx from 'react-native-onyx'; -import {NullishDeep, OnyxCollection} from 'react-native-onyx/lib/types'; +import type {NullishDeep, OnyxCollection} from 'react-native-onyx/lib/types'; import Log from '@libs/Log'; import ONYXKEYS from '@src/ONYXKEYS'; -import Transaction from '@src/types/onyx/Transaction'; +import type Transaction from '@src/types/onyx/Transaction'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; type OldTransaction = Transaction & {receiptFilename?: string}; diff --git a/src/libs/migrations/TransactionBackupsToCollection.ts b/src/libs/migrations/TransactionBackupsToCollection.ts index ddaa691b8d47..407bc70e1f38 100644 --- a/src/libs/migrations/TransactionBackupsToCollection.ts +++ b/src/libs/migrations/TransactionBackupsToCollection.ts @@ -1,7 +1,8 @@ -import Onyx, {OnyxCollection} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Transaction} from '@src/types/onyx'; +import type {Transaction} from '@src/types/onyx'; /** * This migration moves all the transaction backups stored in the transaction collection, ONYXKEYS.COLLECTION.TRANSACTION, to a reserved collection that only diff --git a/src/libs/models/BankAccount.ts b/src/libs/models/BankAccount.ts index 6fd77b161aa9..611d77c99927 100644 --- a/src/libs/models/BankAccount.ts +++ b/src/libs/models/BankAccount.ts @@ -1,7 +1,8 @@ import Str from 'expensify-common/lib/str'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; -import BankAccountJSON, {AdditionalData} from '@src/types/onyx/BankAccount'; +import type {AdditionalData} from '@src/types/onyx/BankAccount'; +import type BankAccountJSON from '@src/types/onyx/BankAccount'; type State = ValueOf; diff --git a/src/libs/onyxSubscribe.ts b/src/libs/onyxSubscribe.ts index 5e3213cdcf95..4572ca35a4f2 100644 --- a/src/libs/onyxSubscribe.ts +++ b/src/libs/onyxSubscribe.ts @@ -1,5 +1,6 @@ -import Onyx, {ConnectOptions} from 'react-native-onyx'; -import {OnyxKey} from '@src/ONYXKEYS'; +import type {ConnectOptions} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; +import type {OnyxKey} from '@src/ONYXKEYS'; /** * Connect to onyx data. Same params as Onyx.connect(), but returns a function to unsubscribe. diff --git a/src/libs/setSelection/index.native.ts b/src/libs/setSelection/index.native.ts index e27cd4e58bd7..5bac8be9ae65 100644 --- a/src/libs/setSelection/index.native.ts +++ b/src/libs/setSelection/index.native.ts @@ -1,4 +1,4 @@ -import SetSelection from './types'; +import type SetSelection from './types'; const setSelection: SetSelection = (textInput, start, end) => { if (!textInput) { diff --git a/src/libs/setSelection/index.ts b/src/libs/setSelection/index.ts index 5eee88881924..f518ba4480e8 100644 --- a/src/libs/setSelection/index.ts +++ b/src/libs/setSelection/index.ts @@ -1,4 +1,4 @@ -import SetSelection from './types'; +import type SetSelection from './types'; const setSelection: SetSelection = (textInput, start, end) => { if (!textInput) { diff --git a/src/libs/setSelection/types.ts b/src/libs/setSelection/types.ts index f2717079725f..9e9647c4abe1 100644 --- a/src/libs/setSelection/types.ts +++ b/src/libs/setSelection/types.ts @@ -1,4 +1,4 @@ -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; type SetSelection = (textInput: TextInput | HTMLInputElement, start: number, end: number) => void; diff --git a/src/libs/setShouldShowComposeInputKeyboardAware/index.ts b/src/libs/setShouldShowComposeInputKeyboardAware/index.ts index a6217fcd761b..999df8c16bf1 100644 --- a/src/libs/setShouldShowComposeInputKeyboardAware/index.ts +++ b/src/libs/setShouldShowComposeInputKeyboardAware/index.ts @@ -1,5 +1,5 @@ import * as Composer from '@userActions/Composer'; -import SetShouldShowComposeInputKeyboardAware from './types'; +import type SetShouldShowComposeInputKeyboardAware from './types'; const setShouldShowComposeInputKeyboardAware: SetShouldShowComposeInputKeyboardAware = (shouldShow) => { Composer.setShouldShowComposeInput(shouldShow); diff --git a/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts b/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts index 528b71c45ab8..264ebe4384de 100644 --- a/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts +++ b/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts @@ -1,7 +1,8 @@ -import {EmitterSubscription, Keyboard} from 'react-native'; -import {KeyboardEventName} from 'react-native/Libraries/Components/Keyboard/Keyboard'; +import type {EmitterSubscription} from 'react-native'; +import { Keyboard} from 'react-native'; +import type {KeyboardEventName} from 'react-native/Libraries/Components/Keyboard/Keyboard'; import * as Composer from '@userActions/Composer'; -import SetShouldShowComposeInputKeyboardAware from './types'; +import type SetShouldShowComposeInputKeyboardAware from './types'; let keyboardEventListener: EmitterSubscription | null = null; // On iOS, there is a visible delay in displaying input after the keyboard has been closed with the `keyboardDidHide` event diff --git a/src/libs/shouldDelayFocus/index.android.ts b/src/libs/shouldDelayFocus/index.android.ts index 566628c4df9d..cffa262b5a92 100644 --- a/src/libs/shouldDelayFocus/index.android.ts +++ b/src/libs/shouldDelayFocus/index.android.ts @@ -1,4 +1,4 @@ -import ShouldDelayFocus from './types'; +import type ShouldDelayFocus from './types'; /** When using transitions on Android, we need to delay focusing the text inputs for the keyboard to open. */ const shouldDelayFocus: ShouldDelayFocus = true; diff --git a/src/libs/shouldDelayFocus/index.ts b/src/libs/shouldDelayFocus/index.ts index 0ef7f9b2ccbe..5506eb8a91d2 100644 --- a/src/libs/shouldDelayFocus/index.ts +++ b/src/libs/shouldDelayFocus/index.ts @@ -1,4 +1,4 @@ -import ShouldDelayFocus from './types'; +import type ShouldDelayFocus from './types'; const shouldDelayFocus: ShouldDelayFocus = false; diff --git a/src/libs/shouldRenderOffscreen/index.android.ts b/src/libs/shouldRenderOffscreen/index.android.ts index bf2d9837086f..38cd6ca73ff2 100644 --- a/src/libs/shouldRenderOffscreen/index.android.ts +++ b/src/libs/shouldRenderOffscreen/index.android.ts @@ -1,4 +1,4 @@ -import ShouldRenderOffscreen from './types'; +import type ShouldRenderOffscreen from './types'; // Rendering offscreen on Android allows it to apply opacity to stacked components correctly. const shouldRenderOffscreen: ShouldRenderOffscreen = true; diff --git a/src/libs/shouldRenderOffscreen/index.ts b/src/libs/shouldRenderOffscreen/index.ts index eadcc44814f9..e4a447c38802 100644 --- a/src/libs/shouldRenderOffscreen/index.ts +++ b/src/libs/shouldRenderOffscreen/index.ts @@ -1,4 +1,4 @@ -import ShouldRenderOffscreen from './types'; +import type ShouldRenderOffscreen from './types'; const shouldRenderOffscreen: ShouldRenderOffscreen = false; diff --git a/src/libs/shouldReopenOnfido/index.android.ts b/src/libs/shouldReopenOnfido/index.android.ts index 11f562575b08..6362ce3ded30 100644 --- a/src/libs/shouldReopenOnfido/index.android.ts +++ b/src/libs/shouldReopenOnfido/index.android.ts @@ -1,4 +1,4 @@ -import ShouldReopenOnfido from './types'; +import type ShouldReopenOnfido from './types'; const shouldReopenOnfido: ShouldReopenOnfido = true; diff --git a/src/libs/shouldReopenOnfido/index.ts b/src/libs/shouldReopenOnfido/index.ts index 24322b57df19..8a57c36217ad 100644 --- a/src/libs/shouldReopenOnfido/index.ts +++ b/src/libs/shouldReopenOnfido/index.ts @@ -1,4 +1,4 @@ -import ShouldReopenOnfido from './types'; +import type ShouldReopenOnfido from './types'; const shouldReopenOnfido: ShouldReopenOnfido = false; diff --git a/src/libs/tryResolveUrlFromApiRoot.ts b/src/libs/tryResolveUrlFromApiRoot.ts index 1aa102323a06..7a80228e0a34 100644 --- a/src/libs/tryResolveUrlFromApiRoot.ts +++ b/src/libs/tryResolveUrlFromApiRoot.ts @@ -1,5 +1,5 @@ import Config from '@src/CONFIG'; -import {Request} from '@src/types/onyx'; +import type {Request} from '@src/types/onyx'; import * as ApiUtils from './ApiUtils'; // Absolute URLs (`/` or `//`) should be resolved from API ROOT diff --git a/src/libs/updateMultilineInputRange/index.ios.ts b/src/libs/updateMultilineInputRange/index.ios.ts index cbe271162372..1252079bdaa8 100644 --- a/src/libs/updateMultilineInputRange/index.ios.ts +++ b/src/libs/updateMultilineInputRange/index.ios.ts @@ -1,4 +1,4 @@ -import UpdateMultilineInputRange from './types'; +import type UpdateMultilineInputRange from './types'; /** * Place the cursor at the end of the value (if there is a value in the input). diff --git a/src/libs/updateMultilineInputRange/index.ts b/src/libs/updateMultilineInputRange/index.ts index 062a7a80eeaa..f5d71c5e2038 100644 --- a/src/libs/updateMultilineInputRange/index.ts +++ b/src/libs/updateMultilineInputRange/index.ts @@ -1,5 +1,5 @@ import * as Browser from '@libs/Browser'; -import UpdateMultilineInputRange from './types'; +import type UpdateMultilineInputRange from './types'; /** * Place the cursor at the end of the value (if there is a value in the input). diff --git a/src/libs/updateMultilineInputRange/types.ts b/src/libs/updateMultilineInputRange/types.ts index 95b5a8bce744..d1b134b09a99 100644 --- a/src/libs/updateMultilineInputRange/types.ts +++ b/src/libs/updateMultilineInputRange/types.ts @@ -1,4 +1,4 @@ -import {TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; type UpdateMultilineInputRange = (input: HTMLInputElement | TextInput, shouldAutoFocus?: boolean) => void; diff --git a/src/libs/useNativeDriver/index.native.ts b/src/libs/useNativeDriver/index.native.ts index b7286965f894..93ed069fa807 100644 --- a/src/libs/useNativeDriver/index.native.ts +++ b/src/libs/useNativeDriver/index.native.ts @@ -1,4 +1,4 @@ -import UseNativeDriver from './types'; +import type UseNativeDriver from './types'; const useNativeDriver: UseNativeDriver = true; diff --git a/src/libs/useNativeDriver/index.ts b/src/libs/useNativeDriver/index.ts index 84d34f766e3b..faa9e3597cb9 100644 --- a/src/libs/useNativeDriver/index.ts +++ b/src/libs/useNativeDriver/index.ts @@ -1,4 +1,4 @@ -import UseNativeDriver from './types'; +import type UseNativeDriver from './types'; const useNativeDriver: UseNativeDriver = false; diff --git a/src/libs/willBlurTextInputOnTapOutside/index.native.ts b/src/libs/willBlurTextInputOnTapOutside/index.native.ts index 1cf1bbafe7e6..e411674c4ae5 100644 --- a/src/libs/willBlurTextInputOnTapOutside/index.native.ts +++ b/src/libs/willBlurTextInputOnTapOutside/index.native.ts @@ -1,4 +1,4 @@ -import WillBlurTextInputOnTapOutside from './types'; +import type WillBlurTextInputOnTapOutside from './types'; const willBlurTextInputOnTapOutside: WillBlurTextInputOnTapOutside = () => false; diff --git a/src/libs/willBlurTextInputOnTapOutside/index.ts b/src/libs/willBlurTextInputOnTapOutside/index.ts index 7c88957821b3..987d8a1dfeea 100644 --- a/src/libs/willBlurTextInputOnTapOutside/index.ts +++ b/src/libs/willBlurTextInputOnTapOutside/index.ts @@ -1,4 +1,4 @@ -import WillBlurTextInputOnTapOutside from './types'; +import type WillBlurTextInputOnTapOutside from './types'; const willBlurTextInputOnTapOutside: WillBlurTextInputOnTapOutside = () => true; diff --git a/src/pages/UnlinkLoginPage.tsx b/src/pages/UnlinkLoginPage.tsx index d39f1bce3a47..5f63da70b4ee 100644 --- a/src/pages/UnlinkLoginPage.tsx +++ b/src/pages/UnlinkLoginPage.tsx @@ -1,14 +1,15 @@ -import {StackScreenProps} from '@react-navigation/stack'; +import type {StackScreenProps} from '@react-navigation/stack'; import React, {useEffect} from 'react'; -import {type OnyxEntry, withOnyx} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import usePrevious from '@hooks/usePrevious'; import Navigation from '@libs/Navigation/Navigation'; -import {PublicScreensParamList} from '@navigation/types'; +import type {PublicScreensParamList} from '@navigation/types'; import * as Session from '@userActions/Session'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import type {Account} from '@src/types/onyx'; type UnlinkLoginPageOnyxProps = { diff --git a/src/pages/home/ReportScreenContext.ts b/src/pages/home/ReportScreenContext.ts index 49681d46e4be..28ceb77cfd0d 100644 --- a/src/pages/home/ReportScreenContext.ts +++ b/src/pages/home/ReportScreenContext.ts @@ -1,5 +1,6 @@ -import {createContext, RefObject} from 'react'; -import {FlatList, GestureResponderEvent} from 'react-native'; +import type { RefObject} from 'react'; +import {createContext} from 'react'; +import type {FlatList, GestureResponderEvent} from 'react-native'; type ReactionListRef = { showReactionList: (event: GestureResponderEvent | undefined, reactionListAnchor: Element, emojiName: string, reportActionID: string) => void; diff --git a/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts b/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts index 1e1fc700d8e0..317c3846d160 100644 --- a/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts +++ b/src/pages/home/report/ContextMenu/ReportActionContextMenu.ts @@ -1,8 +1,8 @@ import React from 'react'; -import {GestureResponderEvent, Text as RNText} from 'react-native'; -import {OnyxEntry} from 'react-native-onyx'; -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {GestureResponderEvent, Text as RNText} from 'react-native'; +import type {OnyxEntry} from 'react-native-onyx'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; import type {ReportAction} from '@src/types/onyx'; type OnHideCallback = () => void; diff --git a/src/pages/home/report/ReportActionItemBasicMessage.tsx b/src/pages/home/report/ReportActionItemBasicMessage.tsx index 63e6d2424a7c..f0097a6dce26 100644 --- a/src/pages/home/report/ReportActionItemBasicMessage.tsx +++ b/src/pages/home/report/ReportActionItemBasicMessage.tsx @@ -2,7 +2,7 @@ import React from 'react'; import {View} from 'react-native'; import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type ReportActionItemBasicMessageProps = ChildrenProps & { message: string; diff --git a/src/pages/home/report/ReportActionItemDate.tsx b/src/pages/home/report/ReportActionItemDate.tsx index a8c5c208151a..f7e77023ea64 100644 --- a/src/pages/home/report/ReportActionItemDate.tsx +++ b/src/pages/home/report/ReportActionItemDate.tsx @@ -1,5 +1,5 @@ import React, {memo} from 'react'; -import {OnyxEntry} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; import {withCurrentDate} from '@components/OnyxProvider'; import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; diff --git a/src/pages/home/report/ReportActionItemDraft.tsx b/src/pages/home/report/ReportActionItemDraft.tsx index de4458d7b39f..aeef024fc630 100644 --- a/src/pages/home/report/ReportActionItemDraft.tsx +++ b/src/pages/home/report/ReportActionItemDraft.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; function ReportActionItemDraft({children}: ChildrenProps) { const styles = useThemeStyles(); diff --git a/src/pages/home/report/ReportActionItemGrouped.tsx b/src/pages/home/report/ReportActionItemGrouped.tsx index 2dff5b81c6a7..3fb2cea2a8b4 100644 --- a/src/pages/home/report/ReportActionItemGrouped.tsx +++ b/src/pages/home/report/ReportActionItemGrouped.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type ReportActionItemGroupedProps = ChildrenProps & { /** Styles for the outermost View */ diff --git a/src/pages/home/report/ReportActionItemMessage.tsx b/src/pages/home/report/ReportActionItemMessage.tsx index 89d0aaa1523b..36b677b64718 100644 --- a/src/pages/home/report/ReportActionItemMessage.tsx +++ b/src/pages/home/report/ReportActionItemMessage.tsx @@ -1,5 +1,7 @@ -import React, {ReactElement} from 'react'; -import {StyleProp, Text, View, ViewStyle} from 'react-native'; +import type {ReactElement} from 'react'; +import React from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { Text, View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; diff --git a/src/pages/home/report/ReportActionItemSingle.tsx b/src/pages/home/report/ReportActionItemSingle.tsx index 43b5630b2685..11a221bf9928 100644 --- a/src/pages/home/report/ReportActionItemSingle.tsx +++ b/src/pages/home/report/ReportActionItemSingle.tsx @@ -1,5 +1,6 @@ import React, {useCallback, useMemo} from 'react'; -import {StyleProp, View, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; +import { View} from 'react-native'; import Avatar from '@components/Avatar'; import MultipleAvatars from '@components/MultipleAvatars'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; @@ -21,8 +22,8 @@ import * as UserUtils from '@libs/UserUtils'; import CONST from '@src/CONST'; import ROUTES from '@src/ROUTES'; import type {Report, ReportAction} from '@src/types/onyx'; -import {Icon} from '@src/types/onyx/OnyxCommon'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {Icon} from '@src/types/onyx/OnyxCommon'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; import ReportActionItemDate from './ReportActionItemDate'; import ReportActionItemFragment from './ReportActionItemFragment'; diff --git a/src/pages/home/report/withReportAndReportActionOrNotFound.tsx b/src/pages/home/report/withReportAndReportActionOrNotFound.tsx index 709f1af1c28d..c628ff389817 100644 --- a/src/pages/home/report/withReportAndReportActionOrNotFound.tsx +++ b/src/pages/home/report/withReportAndReportActionOrNotFound.tsx @@ -1,10 +1,12 @@ /* eslint-disable rulesdir/no-negated-variables */ -import {RouteProp} from '@react-navigation/native'; -import React, {ComponentType, ForwardedRef, RefAttributes, useCallback, useEffect} from 'react'; -import {OnyxCollection, OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {RouteProp} from '@react-navigation/native'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { useCallback, useEffect} from 'react'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import withWindowDimensions from '@components/withWindowDimensions'; -import {WindowDimensionsProps} from '@components/withWindowDimensions/types'; +import type {WindowDimensionsProps} from '@components/withWindowDimensions/types'; import compose from '@libs/compose'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; @@ -12,7 +14,7 @@ import * as ReportUtils from '@libs/ReportUtils'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import * as Report from '@userActions/Report'; import ONYXKEYS from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; import {isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; type OnyxProps = { diff --git a/src/pages/home/report/withReportOrNotFound.tsx b/src/pages/home/report/withReportOrNotFound.tsx index cf2c0d5aca4b..2ae1655c66c0 100644 --- a/src/pages/home/report/withReportOrNotFound.tsx +++ b/src/pages/home/report/withReportOrNotFound.tsx @@ -1,13 +1,15 @@ /* eslint-disable rulesdir/no-negated-variables */ -import {RouteProp} from '@react-navigation/native'; -import React, {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import {OnyxCollection, OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {RouteProp} from '@react-navigation/native'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React from 'react'; +import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import * as ReportUtils from '@libs/ReportUtils'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import ONYXKEYS from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; type OnyxProps = { /** The report currently being looked at */ diff --git a/src/pages/workspace/WorkspacesListRow.tsx b/src/pages/workspace/WorkspacesListRow.tsx index 8bcc23faf550..d6bb3fb05385 100755 --- a/src/pages/workspace/WorkspacesListRow.tsx +++ b/src/pages/workspace/WorkspacesListRow.tsx @@ -1,20 +1,21 @@ import React, {useMemo} from 'react'; import {View} from 'react-native'; -import {ValueOf} from 'type-fest'; +import type {ValueOf} from 'type-fest'; import Avatar from '@components/Avatar'; import Icon from '@components/Icon'; import * as Illustrations from '@components/Icon/Illustrations'; -import {MenuItemProps} from '@components/MenuItem'; +import type {MenuItemProps} from '@components/MenuItem'; import Text from '@components/Text'; import ThreeDotsMenu from '@components/ThreeDotsMenu'; -import withCurrentUserPersonalDetails, {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails'; +import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails'; +import withCurrentUserPersonalDetails from '@components/withCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; -import {AvatarSource} from '@libs/UserUtils'; +import type {AvatarSource} from '@libs/UserUtils'; import variables from '@styles/variables'; import CONST from '@src/CONST'; -import IconAsset from '@src/types/utils/IconAsset'; +import type IconAsset from '@src/types/utils/IconAsset'; type WorkspacesListRowProps = WithCurrentUserPersonalDetailsProps & { /** Name of the workspace */ diff --git a/src/pages/workspace/withPolicy.tsx b/src/pages/workspace/withPolicy.tsx index 6c24ff8523bd..b1cd9ce69d62 100644 --- a/src/pages/workspace/withPolicy.tsx +++ b/src/pages/workspace/withPolicy.tsx @@ -1,12 +1,15 @@ -import {RouteProp, useNavigationState} from '@react-navigation/native'; +import type {RouteProp} from '@react-navigation/native'; +import { useNavigationState} from '@react-navigation/native'; import PropTypes from 'prop-types'; -import React, {ComponentType, ForwardedRef, forwardRef, RefAttributes} from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { forwardRef} from 'react'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import policyMemberPropType from '@pages/policyMemberPropType'; import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import * as OnyxTypes from '@src/types/onyx'; +import type * as OnyxTypes from '@src/types/onyx'; type PolicyRoute = RouteProp<{params: {policyID: string}}>; diff --git a/src/pages/workspace/withPolicyAndFullscreenLoading.tsx b/src/pages/workspace/withPolicyAndFullscreenLoading.tsx index 3e8bd3bdddb4..19201311c5d7 100644 --- a/src/pages/workspace/withPolicyAndFullscreenLoading.tsx +++ b/src/pages/workspace/withPolicyAndFullscreenLoading.tsx @@ -1,10 +1,13 @@ import isEmpty from 'lodash/isEmpty'; -import React, {ComponentType, ForwardedRef, forwardRef, RefAttributes} from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; +import React, { forwardRef} from 'react'; +import type {OnyxEntry} from 'react-native-onyx'; +import { withOnyx} from 'react-native-onyx'; import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import compose from '@libs/compose'; import ONYXKEYS from '@src/ONYXKEYS'; -import withPolicy, {policyDefaultProps, WithPolicyOnyxProps, WithPolicyProps} from './withPolicy'; +import type { WithPolicyOnyxProps, WithPolicyProps} from './withPolicy'; +import withPolicy, {policyDefaultProps} from './withPolicy'; type WithPolicyAndFullscreenLoadingOnyxProps = { /** Indicated whether the report data is loading */ diff --git a/src/stories/Breadcrumbs.stories.tsx b/src/stories/Breadcrumbs.stories.tsx index 60e1900534f9..38cb5192b105 100644 --- a/src/stories/Breadcrumbs.stories.tsx +++ b/src/stories/Breadcrumbs.stories.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import Breadcrumbs, {BreadcrumbsProps} from '@components/Breadcrumbs'; +import type {BreadcrumbsProps} from '@components/Breadcrumbs'; +import Breadcrumbs from '@components/Breadcrumbs'; import CONST from '@src/CONST'; /** diff --git a/src/stories/Search.stories.tsx b/src/stories/Search.stories.tsx index a501fc2610b0..58c3eb2561a2 100644 --- a/src/stories/Search.stories.tsx +++ b/src/stories/Search.stories.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import Search, {SearchProps} from '@components/Search'; +import type {SearchProps} from '@components/Search'; +import Search from '@components/Search'; /** * We use the Component Story Format for writing stories. Follow the docs here: diff --git a/src/styles/index.ts b/src/styles/index.ts index fb1919b9f5d3..52449b8e9733 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -1,17 +1,18 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import {LineLayerStyleProps} from '@rnmapbox/maps/src/utils/MapboxStyles'; +import type {LineLayerStyleProps} from '@rnmapbox/maps/src/utils/MapboxStyles'; import lodashClamp from 'lodash/clamp'; -import {LineLayer} from 'react-map-gl'; -import {AnimatableNumericValue, Animated, ImageStyle, StyleSheet, TextStyle, ViewStyle} from 'react-native'; -import {CustomAnimation} from 'react-native-animatable'; -import {PickerStyle} from 'react-native-picker-select'; -import {MixedStyleDeclaration, MixedStyleRecord} from 'react-native-render-html'; -import DotLottieAnimation from '@components/LottieAnimations/types'; +import type {LineLayer} from 'react-map-gl'; +import type {AnimatableNumericValue, Animated, ImageStyle, TextStyle, ViewStyle} from 'react-native'; +import { StyleSheet} from 'react-native'; +import type {CustomAnimation} from 'react-native-animatable'; +import type {PickerStyle} from 'react-native-picker-select'; +import type {MixedStyleDeclaration, MixedStyleRecord} from 'react-native-render-html'; +import type DotLottieAnimation from '@components/LottieAnimations/types'; import * as Browser from '@libs/Browser'; import CONST from '@src/CONST'; import {defaultTheme} from './theme'; import colors from './theme/colors'; -import {type ThemeColors} from './theme/types'; +import type {ThemeColors} from './theme/types'; import addOutlineWidth from './utils/addOutlineWidth'; import borders from './utils/borders'; import codeStyles from './utils/codeStyles'; diff --git a/src/styles/theme/colors.ts b/src/styles/theme/colors.ts index 061336d2d114..0312e6613baf 100644 --- a/src/styles/theme/colors.ts +++ b/src/styles/theme/colors.ts @@ -1,4 +1,4 @@ -import {Color} from './types'; +import type {Color} from './types'; /** * DO NOT import colors.js into files. Use the theme switching hooks and HOCs instead. diff --git a/src/styles/theme/context/ThemeContext.ts b/src/styles/theme/context/ThemeContext.ts index 64cd805b3f59..8a1574af0e99 100644 --- a/src/styles/theme/context/ThemeContext.ts +++ b/src/styles/theme/context/ThemeContext.ts @@ -1,5 +1,5 @@ import React from 'react'; -import {type ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; import {defaultTheme} from '..'; const ThemeContext = React.createContext(defaultTheme); diff --git a/src/styles/theme/context/ThemeIllustrationsContext.ts b/src/styles/theme/context/ThemeIllustrationsContext.ts index b70cf6aa5ea2..f762a35b0800 100644 --- a/src/styles/theme/context/ThemeIllustrationsContext.ts +++ b/src/styles/theme/context/ThemeIllustrationsContext.ts @@ -1,6 +1,6 @@ import React from 'react'; import {DefaultIllustrations} from '@styles/theme/illustrations'; -import {IllustrationsType} from '@styles/theme/illustrations/types'; +import type {IllustrationsType} from '@styles/theme/illustrations/types'; const ThemeIllustrationsContext = React.createContext(DefaultIllustrations); diff --git a/src/styles/theme/illustrations/index.ts b/src/styles/theme/illustrations/index.ts index 9526dbcd1023..2686f4205351 100644 --- a/src/styles/theme/illustrations/index.ts +++ b/src/styles/theme/illustrations/index.ts @@ -1,4 +1,4 @@ -import {ThemePreferenceWithoutSystem} from '@styles/theme/types'; +import type {ThemePreferenceWithoutSystem} from '@styles/theme/types'; import CONST from '@src/CONST'; import darkIllustrations from './themes/dark'; import lightIllustrations from './themes/light'; diff --git a/src/styles/theme/illustrations/themes/dark.ts b/src/styles/theme/illustrations/themes/dark.ts index 2a4390ae2520..2920081ac137 100644 --- a/src/styles/theme/illustrations/themes/dark.ts +++ b/src/styles/theme/illustrations/themes/dark.ts @@ -1,7 +1,7 @@ import EmptyStateBackgroundImage from '@assets/images/themeDependent/empty-state_background-fade-dark.png'; import ExampleCheckEN from '@assets/images/themeDependent/example-check-image-dark-en.png'; import ExampleCheckES from '@assets/images/themeDependent/example-check-image-dark-es.png'; -import {IllustrationsType} from '@styles/theme/illustrations/types'; +import type {IllustrationsType} from '@styles/theme/illustrations/types'; const illustrations = { EmptyStateBackgroundImage, diff --git a/src/styles/theme/illustrations/themes/light.ts b/src/styles/theme/illustrations/themes/light.ts index f41114a04efa..6eb9c11851e4 100644 --- a/src/styles/theme/illustrations/themes/light.ts +++ b/src/styles/theme/illustrations/themes/light.ts @@ -1,7 +1,7 @@ import EmptyStateBackgroundImage from '@assets/images/themeDependent/empty-state_background-fade-light.png'; import ExampleCheckEN from '@assets/images/themeDependent/example-check-image-light-en.png'; import ExampleCheckES from '@assets/images/themeDependent/example-check-image-light-es.png'; -import {IllustrationsType} from '@styles/theme/illustrations/types'; +import type {IllustrationsType} from '@styles/theme/illustrations/types'; const illustrations = { EmptyStateBackgroundImage, diff --git a/src/styles/theme/illustrations/types.ts b/src/styles/theme/illustrations/types.ts index bda98dc55fbf..b37ff17965e2 100644 --- a/src/styles/theme/illustrations/types.ts +++ b/src/styles/theme/illustrations/types.ts @@ -1,4 +1,4 @@ -import {ImageSourcePropType} from 'react-native'; +import type {ImageSourcePropType} from 'react-native'; type IllustrationsType = { EmptyStateBackgroundImage: ImageSourcePropType; diff --git a/src/styles/theme/index.ts b/src/styles/theme/index.ts index c8c3a6ec12c1..fcb22dcba2d2 100644 --- a/src/styles/theme/index.ts +++ b/src/styles/theme/index.ts @@ -1,7 +1,7 @@ import CONST from '@src/CONST'; import darkTheme from './themes/dark'; import lightTheme from './themes/light'; -import {type ThemeColors, ThemePreferenceWithoutSystem} from './types'; +import type { ThemePreferenceWithoutSystem,type ThemeColors} from './types'; const themes = { [CONST.THEME.LIGHT]: lightTheme, diff --git a/src/styles/theme/themes/dark.ts b/src/styles/theme/themes/dark.ts index a2954a4fca03..8ac7b0a2359c 100644 --- a/src/styles/theme/themes/dark.ts +++ b/src/styles/theme/themes/dark.ts @@ -1,5 +1,5 @@ import colors from '@styles/theme/colors'; -import {type ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; import CONST from '@src/CONST'; import SCREENS from '@src/SCREENS'; diff --git a/src/styles/theme/themes/light.ts b/src/styles/theme/themes/light.ts index d4819898b83c..663b94aa0fc7 100644 --- a/src/styles/theme/themes/light.ts +++ b/src/styles/theme/themes/light.ts @@ -1,5 +1,5 @@ import colors from '@styles/theme/colors'; -import {type ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; import CONST from '@src/CONST'; import SCREENS from '@src/SCREENS'; diff --git a/src/styles/theme/types.ts b/src/styles/theme/types.ts index b443295b8167..2a1bb79e2efb 100644 --- a/src/styles/theme/types.ts +++ b/src/styles/theme/types.ts @@ -1,5 +1,5 @@ -import CONST from '@src/CONST'; -import {type ColorScheme, type StatusBarStyle} from '..'; +import type CONST from '@src/CONST'; +import type {ColorScheme, StatusBarStyle} from '..'; type Color = string; diff --git a/src/styles/utils/addOutlineWidth/index.native.ts b/src/styles/utils/addOutlineWidth/index.native.ts index d081e2a9af70..9a9942951cd0 100644 --- a/src/styles/utils/addOutlineWidth/index.native.ts +++ b/src/styles/utils/addOutlineWidth/index.native.ts @@ -2,7 +2,7 @@ * Native platforms don't support the "addOutlineWidth" property, so this * function is a no-op */ -import AddOutlineWidth from './types'; +import type AddOutlineWidth from './types'; // eslint-disable-next-line @typescript-eslint/naming-convention const addOutlineWidth: AddOutlineWidth = (_theme, obj) => obj; diff --git a/src/styles/utils/addOutlineWidth/index.ts b/src/styles/utils/addOutlineWidth/index.ts index c1ac1af52a8b..104f3ce90516 100644 --- a/src/styles/utils/addOutlineWidth/index.ts +++ b/src/styles/utils/addOutlineWidth/index.ts @@ -2,7 +2,7 @@ * Web and desktop platforms support the "addOutlineWidth" property, so it * can be added to the object */ -import AddOutlineWidth from './types'; +import type AddOutlineWidth from './types'; /** * Adds the addOutlineWidth property to an object to be used when styling diff --git a/src/styles/utils/addOutlineWidth/types.ts b/src/styles/utils/addOutlineWidth/types.ts index f6b9be63893c..45975b72dc8a 100644 --- a/src/styles/utils/addOutlineWidth/types.ts +++ b/src/styles/utils/addOutlineWidth/types.ts @@ -1,5 +1,5 @@ -import {TextStyle} from 'react-native'; -import {type ThemeColors} from '@styles/theme/types'; +import type {TextStyle} from 'react-native'; +import type {ThemeColors} from '@styles/theme/types'; type AddOutlineWidth = (theme: ThemeColors, obj: TextStyle, val?: number, hasError?: boolean) => TextStyle; diff --git a/src/styles/utils/borders.ts b/src/styles/utils/borders.ts index 9cd02dcd22ae..26fdf6415fc7 100644 --- a/src/styles/utils/borders.ts +++ b/src/styles/utils/borders.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; /** * All styles should be incremented by units of 4. diff --git a/src/styles/utils/cardStyles/index.native.ts b/src/styles/utils/cardStyles/index.native.ts index 94b8758efd05..73ebccfd4ab4 100644 --- a/src/styles/utils/cardStyles/index.native.ts +++ b/src/styles/utils/cardStyles/index.native.ts @@ -1,4 +1,4 @@ -import GetCardStyles from './types'; +import type GetCardStyles from './types'; const getCardStyles: GetCardStyles = () => ({}); diff --git a/src/styles/utils/cardStyles/index.ts b/src/styles/utils/cardStyles/index.ts index 77a00695d20a..3a1f778f36f4 100644 --- a/src/styles/utils/cardStyles/index.ts +++ b/src/styles/utils/cardStyles/index.ts @@ -1,5 +1,5 @@ import positioning from '@styles/utils/positioning'; -import GetCardStyles from './types'; +import type GetCardStyles from './types'; /** * Get card style for cardStyleInterpolator diff --git a/src/styles/utils/cardStyles/types.ts b/src/styles/utils/cardStyles/types.ts index 134b93eae32f..38c761c8bf4f 100644 --- a/src/styles/utils/cardStyles/types.ts +++ b/src/styles/utils/cardStyles/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type GetCardStyles = (screenWidth: number) => ViewStyle; diff --git a/src/styles/utils/codeStyles/index.android.ts b/src/styles/utils/codeStyles/index.android.ts index 1912f0ad7489..0ac77729c83c 100644 --- a/src/styles/utils/codeStyles/index.android.ts +++ b/src/styles/utils/codeStyles/index.android.ts @@ -1,4 +1,4 @@ -import {CodeTextStyles, CodeWordStyles, CodeWordWrapperStyles} from './types'; +import type {CodeTextStyles, CodeWordStyles, CodeWordWrapperStyles} from './types'; const codeWordWrapper: CodeWordWrapperStyles = { height: 20, diff --git a/src/styles/utils/codeStyles/index.ios.ts b/src/styles/utils/codeStyles/index.ios.ts index ec87e3b6427b..05e2b55ec205 100644 --- a/src/styles/utils/codeStyles/index.ios.ts +++ b/src/styles/utils/codeStyles/index.ios.ts @@ -1,4 +1,4 @@ -import {CodeTextStyles, CodeWordStyles, CodeWordWrapperStyles} from './types'; +import type {CodeTextStyles, CodeWordStyles, CodeWordWrapperStyles} from './types'; const codeWordWrapper: CodeWordWrapperStyles = { height: 22, diff --git a/src/styles/utils/codeStyles/index.ts b/src/styles/utils/codeStyles/index.ts index 45f669b0adaa..80a66df95c7c 100644 --- a/src/styles/utils/codeStyles/index.ts +++ b/src/styles/utils/codeStyles/index.ts @@ -1,4 +1,4 @@ -import {CodeTextStyles, CodeWordStyles, CodeWordWrapperStyles} from './types'; +import type {CodeTextStyles, CodeWordStyles, CodeWordWrapperStyles} from './types'; // We do not need these on Web/Desktop as their implementation defer from Native devices so just noop them const codeWordWrapper: CodeWordWrapperStyles = {}; diff --git a/src/styles/utils/codeStyles/types.ts b/src/styles/utils/codeStyles/types.ts index f223d980e67b..245676b0a331 100644 --- a/src/styles/utils/codeStyles/types.ts +++ b/src/styles/utils/codeStyles/types.ts @@ -1,4 +1,4 @@ -import {TextStyle, ViewStyle} from 'react-native'; +import type {TextStyle, ViewStyle} from 'react-native'; type CodeWordWrapperStyles = ViewStyle; type CodeWordStyles = ViewStyle; diff --git a/src/styles/utils/containerComposeStyles/index.native.ts b/src/styles/utils/containerComposeStyles/index.native.ts index 3104b6878b2a..de95087ab93e 100644 --- a/src/styles/utils/containerComposeStyles/index.native.ts +++ b/src/styles/utils/containerComposeStyles/index.native.ts @@ -1,4 +1,4 @@ -import ContainerComposeStyles from './types'; +import type ContainerComposeStyles from './types'; const containerComposeStyles: ContainerComposeStyles = (styles) => [styles.textInputComposeSpacing]; diff --git a/src/styles/utils/containerComposeStyles/index.ts b/src/styles/utils/containerComposeStyles/index.ts index c6161fd2d9df..3f858292afee 100644 --- a/src/styles/utils/containerComposeStyles/index.ts +++ b/src/styles/utils/containerComposeStyles/index.ts @@ -1,4 +1,4 @@ -import ContainerComposeStyles from './types'; +import type ContainerComposeStyles from './types'; // We need to set paddingVertical = 0 on web to avoid displaying a normal pointer on some parts of compose box when not in focus const containerComposeStyles: ContainerComposeStyles = (styles) => [styles.textInputComposeSpacing, {paddingVertical: 0}]; diff --git a/src/styles/utils/containerComposeStyles/types.ts b/src/styles/utils/containerComposeStyles/types.ts index 2b2d23b7f8c1..0b3d598ad042 100644 --- a/src/styles/utils/containerComposeStyles/types.ts +++ b/src/styles/utils/containerComposeStyles/types.ts @@ -1,5 +1,5 @@ -import {ViewStyle} from 'react-native'; -import {type ThemeStyles} from '@styles/index'; +import type {ViewStyle} from 'react-native'; +import type {ThemeStyles} from '@styles/index'; type ContainerComposeStyles = (styles: ThemeStyles) => ViewStyle[]; diff --git a/src/styles/utils/cursor/index.native.ts b/src/styles/utils/cursor/index.native.ts index 67416e750f36..74b9b72bd1d0 100644 --- a/src/styles/utils/cursor/index.native.ts +++ b/src/styles/utils/cursor/index.native.ts @@ -1,4 +1,4 @@ -import CursorStyles from './types'; +import type CursorStyles from './types'; const cursor: CursorStyles = { cursorDefault: {}, diff --git a/src/styles/utils/cursor/index.ts b/src/styles/utils/cursor/index.ts index e3f85107f16a..958e45749ebb 100644 --- a/src/styles/utils/cursor/index.ts +++ b/src/styles/utils/cursor/index.ts @@ -1,4 +1,4 @@ -import CursorStyles from './types'; +import type CursorStyles from './types'; const cursor: CursorStyles = { cursorDefault: { diff --git a/src/styles/utils/cursor/types.ts b/src/styles/utils/cursor/types.ts index e9cfc120b161..7ffac48612fb 100644 --- a/src/styles/utils/cursor/types.ts +++ b/src/styles/utils/cursor/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type CursorStylesKeys = | 'cursorDefault' diff --git a/src/styles/utils/display.ts b/src/styles/utils/display.ts index f14a25d641b1..82b8c87b0980 100644 --- a/src/styles/utils/display.ts +++ b/src/styles/utils/display.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; /** * Display utilities with Bootstrap inspired naming. diff --git a/src/styles/utils/editedLabelStyles/index.native.ts b/src/styles/utils/editedLabelStyles/index.native.ts index 3e43004a8a13..d49857ba28eb 100644 --- a/src/styles/utils/editedLabelStyles/index.native.ts +++ b/src/styles/utils/editedLabelStyles/index.native.ts @@ -1,4 +1,4 @@ -import EditedLabelStyles from './types'; +import type EditedLabelStyles from './types'; const editedLabelStyles: EditedLabelStyles = {}; diff --git a/src/styles/utils/editedLabelStyles/index.ts b/src/styles/utils/editedLabelStyles/index.ts index 427918af1202..9397966a88a5 100644 --- a/src/styles/utils/editedLabelStyles/index.ts +++ b/src/styles/utils/editedLabelStyles/index.ts @@ -1,6 +1,6 @@ import display from '@styles/utils/display'; import flex from '@styles/utils/flex'; -import EditedLabelStyles from './types'; +import type EditedLabelStyles from './types'; const editedLabelStyles: EditedLabelStyles = { ...display.dInlineFlex, diff --git a/src/styles/utils/editedLabelStyles/types.ts b/src/styles/utils/editedLabelStyles/types.ts index 20bcc8c55f15..6f263e2d9e64 100644 --- a/src/styles/utils/editedLabelStyles/types.ts +++ b/src/styles/utils/editedLabelStyles/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type EditedLabelStyles = TextStyle; diff --git a/src/styles/utils/flex.ts b/src/styles/utils/flex.ts index 6c7541a3ef46..38b68bddd38d 100644 --- a/src/styles/utils/flex.ts +++ b/src/styles/utils/flex.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; /** * Flex layout utility styles with Bootstrap inspired naming. diff --git a/src/styles/utils/fontFamily/bold/index.android.ts b/src/styles/utils/fontFamily/bold/index.android.ts index 828b9425e8d4..89f116f18c20 100644 --- a/src/styles/utils/fontFamily/bold/index.android.ts +++ b/src/styles/utils/fontFamily/bold/index.android.ts @@ -1,4 +1,4 @@ -import FontFamilyBoldStyles from './types'; +import type FontFamilyBoldStyles from './types'; const singleBold: FontFamilyBoldStyles = 'ExpensifyNeue-Bold'; const multiBold: FontFamilyBoldStyles = 'ExpensifyNeue-Bold'; diff --git a/src/styles/utils/fontFamily/bold/index.ios.ts b/src/styles/utils/fontFamily/bold/index.ios.ts index 31b7e3d82c05..a5dfea7ecd2e 100644 --- a/src/styles/utils/fontFamily/bold/index.ios.ts +++ b/src/styles/utils/fontFamily/bold/index.ios.ts @@ -1,4 +1,4 @@ -import FontFamilyBoldStyles from './types'; +import type FontFamilyBoldStyles from './types'; const singleBold: FontFamilyBoldStyles = 'ExpensifyNeue-Regular'; const multiBold: FontFamilyBoldStyles = 'ExpensifyNeue-Regular'; diff --git a/src/styles/utils/fontFamily/bold/index.ts b/src/styles/utils/fontFamily/bold/index.ts index c416bff3aadc..d07951acd0f5 100644 --- a/src/styles/utils/fontFamily/bold/index.ts +++ b/src/styles/utils/fontFamily/bold/index.ts @@ -1,4 +1,4 @@ -import FontFamilyBoldStyles from './types'; +import type FontFamilyBoldStyles from './types'; const singleBold: FontFamilyBoldStyles = 'ExpensifyNeue-Regular'; const multiBold: FontFamilyBoldStyles = 'ExpensifyNeue-Regular, Segoe UI Emoji, Noto Color Emoji'; diff --git a/src/styles/utils/fontFamily/bold/types.ts b/src/styles/utils/fontFamily/bold/types.ts index 258b23de94a2..b393618102a5 100644 --- a/src/styles/utils/fontFamily/bold/types.ts +++ b/src/styles/utils/fontFamily/bold/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type FontFamilyBoldStyles = NonNullable; diff --git a/src/styles/utils/fontFamily/multiFontFamily.ts b/src/styles/utils/fontFamily/multiFontFamily.ts index 5bd89e0d4bcb..902b94021b32 100644 --- a/src/styles/utils/fontFamily/multiFontFamily.ts +++ b/src/styles/utils/fontFamily/multiFontFamily.ts @@ -1,7 +1,7 @@ import getOperatingSystem from '@libs/getOperatingSystem'; import CONST from '@src/CONST'; import {multiBold} from './bold'; -import FontFamilyStyles from './types'; +import type FontFamilyStyles from './types'; // In windows and ubuntu, we need some extra system fonts for emojis to work properly // otherwise few of them will appear as black and white diff --git a/src/styles/utils/fontFamily/singleFontFamily.ts b/src/styles/utils/fontFamily/singleFontFamily.ts index 6d5b05a5b0aa..71294c55ffaa 100644 --- a/src/styles/utils/fontFamily/singleFontFamily.ts +++ b/src/styles/utils/fontFamily/singleFontFamily.ts @@ -1,5 +1,5 @@ import {singleBold} from './bold'; -import FontFamilyStyles from './types'; +import type FontFamilyStyles from './types'; const fontFamily: FontFamilyStyles = { EXP_NEUE_ITALIC: 'ExpensifyNeue-Italic', diff --git a/src/styles/utils/fontFamily/types.ts b/src/styles/utils/fontFamily/types.ts index c688f40927be..724f92d4edc7 100644 --- a/src/styles/utils/fontFamily/types.ts +++ b/src/styles/utils/fontFamily/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type FontFamilyKeys = | 'EXP_NEUE_ITALIC' diff --git a/src/styles/utils/fontWeight/bold/index.android.ts b/src/styles/utils/fontWeight/bold/index.android.ts index 3119e0f391cd..f4364eeb1e80 100644 --- a/src/styles/utils/fontWeight/bold/index.android.ts +++ b/src/styles/utils/fontWeight/bold/index.android.ts @@ -1,4 +1,4 @@ -import FontWeightBoldStyles from './types'; +import type FontWeightBoldStyles from './types'; // Android has ExpensifyNeue-Bold, but fontWeight: '700' will result in // an incorrect font displaying on Android diff --git a/src/styles/utils/fontWeight/bold/index.ts b/src/styles/utils/fontWeight/bold/index.ts index 45de49abb35b..ecb6cb5ce2b1 100644 --- a/src/styles/utils/fontWeight/bold/index.ts +++ b/src/styles/utils/fontWeight/bold/index.ts @@ -1,4 +1,4 @@ -import FontWeightBoldStyles from './types'; +import type FontWeightBoldStyles from './types'; // Web only has ExpensifyNeue-Regular so to achieve bold we need to add this fontWeight const bold: FontWeightBoldStyles = '700'; diff --git a/src/styles/utils/fontWeight/bold/types.ts b/src/styles/utils/fontWeight/bold/types.ts index 00e72d0e879c..624deb999a43 100644 --- a/src/styles/utils/fontWeight/bold/types.ts +++ b/src/styles/utils/fontWeight/bold/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type FontWeightBoldStyles = NonNullable; diff --git a/src/styles/utils/generators/ModalStyleUtils.ts b/src/styles/utils/generators/ModalStyleUtils.ts index 67faec504d61..3dfb1e67e038 100644 --- a/src/styles/utils/generators/ModalStyleUtils.ts +++ b/src/styles/utils/generators/ModalStyleUtils.ts @@ -1,10 +1,10 @@ -import {ViewStyle} from 'react-native'; -import {ModalProps} from 'react-native-modal'; -import {ValueOf} from 'type-fest'; -import {ThemeStyles} from '@styles/index'; +import type {ViewStyle} from 'react-native'; +import type {ModalProps} from 'react-native-modal'; +import type {ValueOf} from 'type-fest'; +import type {ThemeStyles} from '@styles/index'; import variables from '@styles/variables'; import CONST from '@src/CONST'; -import StyleUtilGenerator from './types'; +import type StyleUtilGenerator from './types'; function getCenteredModalStyles(styles: ThemeStyles, windowWidth: number, isSmallScreenWidth: boolean, isFullScreenWhenSmall = false): ViewStyle { const modalStyles = styles.centeredModalStyles(isSmallScreenWidth, isFullScreenWhenSmall); diff --git a/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts b/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts index 10904fca05cd..e45b5db98b53 100644 --- a/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts +++ b/src/styles/utils/generators/ReportActionContextMenuStyleUtils.ts @@ -1,8 +1,8 @@ -import {ViewStyle} from 'react-native'; -import {ThemeStyles} from '@styles/index'; -import {type ThemeColors} from '@styles/theme/types'; +import type {ViewStyle} from 'react-native'; +import type {ThemeStyles} from '@styles/index'; +import type {ThemeColors} from '@styles/theme/types'; import variables from '@styles/variables'; -import StyleUtilGenerator from './types'; +import type StyleUtilGenerator from './types'; const getDefaultWrapperStyle = (theme: ThemeColors): ViewStyle => ({ backgroundColor: theme.componentBG, diff --git a/src/styles/utils/generators/TooltipStyleUtils.ts b/src/styles/utils/generators/TooltipStyleUtils.ts index 0e9fda1a3388..86b1a7f90482 100644 --- a/src/styles/utils/generators/TooltipStyleUtils.ts +++ b/src/styles/utils/generators/TooltipStyleUtils.ts @@ -1,10 +1,11 @@ -import {Animated, TextStyle, View, ViewStyle} from 'react-native'; +import type { TextStyle, View, ViewStyle} from 'react-native'; +import {Animated} from 'react-native'; import fontFamily from '@styles/utils/fontFamily'; import positioning from '@styles/utils/positioning'; import roundToNearestMultipleOfFour from '@styles/utils/roundToNearestMultipleOfFour'; import spacing from '@styles/utils/spacing'; import variables from '@styles/variables'; -import StyleUtilGenerator from './types'; +import type StyleUtilGenerator from './types'; /** This defines the proximity with the edge of the window in which tooltips should not be displayed. * If a tooltip is too close to the edge of the screen, we'll shift it towards the center. */ diff --git a/src/styles/utils/generators/types.ts b/src/styles/utils/generators/types.ts index ca6a630d94c5..dd346a3fefc6 100644 --- a/src/styles/utils/generators/types.ts +++ b/src/styles/utils/generators/types.ts @@ -1,5 +1,5 @@ -import {ThemeStyles} from '@styles/index'; -import {ThemeColors} from '@styles/theme/types'; +import type {ThemeStyles} from '@styles/index'; +import type {ThemeColors} from '@styles/theme/types'; type StyleUtilGenerator> = (props: {theme: ThemeColors; styles: ThemeStyles}) => StyleUtil; diff --git a/src/styles/utils/getContextMenuItemStyles/index.native.ts b/src/styles/utils/getContextMenuItemStyles/index.native.ts index c8c1a828a0f3..cb0f55cd8d1d 100644 --- a/src/styles/utils/getContextMenuItemStyles/index.native.ts +++ b/src/styles/utils/getContextMenuItemStyles/index.native.ts @@ -1,4 +1,4 @@ -import GetContextMenuItemStyle from './types'; +import type GetContextMenuItemStyle from './types'; const getContextMenuItemStyles: GetContextMenuItemStyle = (styles) => [styles.popoverMenuItem]; diff --git a/src/styles/utils/getContextMenuItemStyles/index.ts b/src/styles/utils/getContextMenuItemStyles/index.ts index 42635033a244..b8c879c0bfdf 100644 --- a/src/styles/utils/getContextMenuItemStyles/index.ts +++ b/src/styles/utils/getContextMenuItemStyles/index.ts @@ -1,5 +1,5 @@ import variables from '@styles/variables'; -import GetContextMenuItemStyle from './types'; +import type GetContextMenuItemStyle from './types'; const getContextMenuItemStyles: GetContextMenuItemStyle = (styles, windowWidth) => { if (windowWidth && windowWidth > variables.mobileResponsiveWidthBreakpoint) { diff --git a/src/styles/utils/getContextMenuItemStyles/types.ts b/src/styles/utils/getContextMenuItemStyles/types.ts index 06b989becf8a..67668c36fcca 100644 --- a/src/styles/utils/getContextMenuItemStyles/types.ts +++ b/src/styles/utils/getContextMenuItemStyles/types.ts @@ -1,5 +1,5 @@ -import {ViewStyle} from 'react-native'; -import {type ThemeStyles} from '@styles/index'; +import type {ViewStyle} from 'react-native'; +import type {ThemeStyles} from '@styles/index'; type GetContextMenuItemStyle = (styles: ThemeStyles, windowWidth?: number) => ViewStyle[]; diff --git a/src/styles/utils/getNavigationModalCardStyles/index.desktop.ts b/src/styles/utils/getNavigationModalCardStyles/index.desktop.ts index 523f82048a02..c7a469cbd114 100644 --- a/src/styles/utils/getNavigationModalCardStyles/index.desktop.ts +++ b/src/styles/utils/getNavigationModalCardStyles/index.desktop.ts @@ -1,5 +1,5 @@ import positioning from '@styles/utils/positioning'; -import GetNavigationModalCardStyles from './types'; +import type GetNavigationModalCardStyles from './types'; const getNavigationModalCardStyles: GetNavigationModalCardStyles = () => ({ // position: fixed is set instead of position absolute to workaround Safari known issues of updating heights in DOM. diff --git a/src/styles/utils/getNavigationModalCardStyles/index.ts b/src/styles/utils/getNavigationModalCardStyles/index.ts index d3cf49c6c89c..1614690dbbcd 100644 --- a/src/styles/utils/getNavigationModalCardStyles/index.ts +++ b/src/styles/utils/getNavigationModalCardStyles/index.ts @@ -1,4 +1,4 @@ -import GetNavigationModalCardStyles from './types'; +import type GetNavigationModalCardStyles from './types'; const getNavigationModalCardStyles: GetNavigationModalCardStyles = () => ({ height: '100%', diff --git a/src/styles/utils/getNavigationModalCardStyles/index.website.ts b/src/styles/utils/getNavigationModalCardStyles/index.website.ts index 523f82048a02..c7a469cbd114 100644 --- a/src/styles/utils/getNavigationModalCardStyles/index.website.ts +++ b/src/styles/utils/getNavigationModalCardStyles/index.website.ts @@ -1,5 +1,5 @@ import positioning from '@styles/utils/positioning'; -import GetNavigationModalCardStyles from './types'; +import type GetNavigationModalCardStyles from './types'; const getNavigationModalCardStyles: GetNavigationModalCardStyles = () => ({ // position: fixed is set instead of position absolute to workaround Safari known issues of updating heights in DOM. diff --git a/src/styles/utils/getNavigationModalCardStyles/types.ts b/src/styles/utils/getNavigationModalCardStyles/types.ts index e0dba07dc908..77452bd77268 100644 --- a/src/styles/utils/getNavigationModalCardStyles/types.ts +++ b/src/styles/utils/getNavigationModalCardStyles/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type GetNavigationModalCardStyles = () => ViewStyle; diff --git a/src/styles/utils/getPopOverVerticalOffset/index.desktop.ts b/src/styles/utils/getPopOverVerticalOffset/index.desktop.ts index 3caab6057a4b..e9880dda42ab 100644 --- a/src/styles/utils/getPopOverVerticalOffset/index.desktop.ts +++ b/src/styles/utils/getPopOverVerticalOffset/index.desktop.ts @@ -1,5 +1,5 @@ import CONST from '@src/CONST'; -import GetPopOverVerticalOffset from './types'; +import type GetPopOverVerticalOffset from './types'; /** Adds the header padding with vertical offset on desktop */ const getPopOverVerticalOffset: GetPopOverVerticalOffset = (vertical) => ({ diff --git a/src/styles/utils/getPopOverVerticalOffset/index.ts b/src/styles/utils/getPopOverVerticalOffset/index.ts index 854653766cd2..a1b64c4f198f 100644 --- a/src/styles/utils/getPopOverVerticalOffset/index.ts +++ b/src/styles/utils/getPopOverVerticalOffset/index.ts @@ -1,4 +1,4 @@ -import GetPopOverVerticalOffset from './types'; +import type GetPopOverVerticalOffset from './types'; const getPopOverVerticalOffset: GetPopOverVerticalOffset = (vertical: number) => ({vertical}); diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts index 4d7af731bae8..d262f19e10cb 100644 --- a/src/styles/utils/index.ts +++ b/src/styles/utils/index.ts @@ -1,15 +1,17 @@ -import {Animated, DimensionValue, ImageStyle, PressableStateCallbackType, StyleProp, StyleSheet, TextStyle, ViewStyle} from 'react-native'; -import {EdgeInsets} from 'react-native-safe-area-context'; -import {ValueOf} from 'type-fest'; +import type {Animated, DimensionValue, ImageStyle, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import { StyleSheet} from 'react-native'; +import type {EdgeInsets} from 'react-native-safe-area-context'; +import type {ValueOf} from 'type-fest'; import * as Browser from '@libs/Browser'; import * as UserUtils from '@libs/UserUtils'; import {defaultTheme} from '@styles/theme'; import colors from '@styles/theme/colors'; -import {ThemeColors} from '@styles/theme/types'; +import type {ThemeColors} from '@styles/theme/types'; import variables from '@styles/variables'; import CONST from '@src/CONST'; -import {Transaction} from '@src/types/onyx'; -import {defaultStyles, type ThemeStyles} from '..'; +import type {Transaction} from '@src/types/onyx'; +import {defaultStyles } from '..'; +import type {ThemeStyles} from '..'; import containerComposeStyles from './containerComposeStyles'; import fontFamily from './fontFamily'; import createModalStyleUtils from './generators/ModalStyleUtils'; @@ -18,7 +20,7 @@ import createTooltipStyleUtils from './generators/TooltipStyleUtils'; import getContextMenuItemStyles from './getContextMenuItemStyles'; import {compactContentContainerStyles} from './optionRowStyles'; import positioning from './positioning'; -import { +import type { AllStyles, AvatarSize, AvatarSizeName, diff --git a/src/styles/utils/italic/index.android.ts b/src/styles/utils/italic/index.android.ts index bbd9deb8cf8d..96b825b1958c 100644 --- a/src/styles/utils/italic/index.android.ts +++ b/src/styles/utils/italic/index.android.ts @@ -1,4 +1,4 @@ -import ItalicStyles from './types'; +import type ItalicStyles from './types'; const italic: ItalicStyles = 'normal'; diff --git a/src/styles/utils/italic/index.ts b/src/styles/utils/italic/index.ts index 02d6c46423f6..7567100a380c 100644 --- a/src/styles/utils/italic/index.ts +++ b/src/styles/utils/italic/index.ts @@ -1,4 +1,4 @@ -import ItalicStyles from './types'; +import type ItalicStyles from './types'; const italic: ItalicStyles = 'italic'; diff --git a/src/styles/utils/italic/types.ts b/src/styles/utils/italic/types.ts index e9feedbdfac5..f8fada7edb0c 100644 --- a/src/styles/utils/italic/types.ts +++ b/src/styles/utils/italic/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type ItalicStyles = NonNullable; diff --git a/src/styles/utils/objectFit.ts b/src/styles/utils/objectFit.ts index 51f0c33b5457..2c748a69e87c 100644 --- a/src/styles/utils/objectFit.ts +++ b/src/styles/utils/objectFit.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; export default { oFCover: { diff --git a/src/styles/utils/optionAlternateTextPlatformStyles/index.ios.ts b/src/styles/utils/optionAlternateTextPlatformStyles/index.ios.ts index 14b024757fb8..160ef8be2f8d 100644 --- a/src/styles/utils/optionAlternateTextPlatformStyles/index.ios.ts +++ b/src/styles/utils/optionAlternateTextPlatformStyles/index.ios.ts @@ -1,4 +1,4 @@ -import OptionAlternateTextPlatformStyles from './types'; +import type OptionAlternateTextPlatformStyles from './types'; const optionAlternateTextPlatformStyles: OptionAlternateTextPlatformStyles = { paddingTop: 1, diff --git a/src/styles/utils/optionAlternateTextPlatformStyles/index.ts b/src/styles/utils/optionAlternateTextPlatformStyles/index.ts index e3232b810e06..00a967b5011e 100644 --- a/src/styles/utils/optionAlternateTextPlatformStyles/index.ts +++ b/src/styles/utils/optionAlternateTextPlatformStyles/index.ts @@ -1,4 +1,4 @@ -import OptionAlternateTextPlatformStyles from './types'; +import type OptionAlternateTextPlatformStyles from './types'; const optionAlternateTextPlatformStyles: OptionAlternateTextPlatformStyles = {}; diff --git a/src/styles/utils/optionAlternateTextPlatformStyles/types.ts b/src/styles/utils/optionAlternateTextPlatformStyles/types.ts index aacdef7e3501..8b37d963b214 100644 --- a/src/styles/utils/optionAlternateTextPlatformStyles/types.ts +++ b/src/styles/utils/optionAlternateTextPlatformStyles/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type OptionAlternateTextPlatformStyles = Pick; diff --git a/src/styles/utils/optionRowStyles/index.native.ts b/src/styles/utils/optionRowStyles/index.native.ts index 334017ba3374..d41e34f23304 100644 --- a/src/styles/utils/optionRowStyles/index.native.ts +++ b/src/styles/utils/optionRowStyles/index.native.ts @@ -1,4 +1,4 @@ -import CompactContentContainerStyles from './types'; +import type CompactContentContainerStyles from './types'; /** * On native platforms, alignItemsBaseline does not work correctly diff --git a/src/styles/utils/optionRowStyles/index.ts b/src/styles/utils/optionRowStyles/index.ts index ce8f542a13ca..b7f40a760cdf 100644 --- a/src/styles/utils/optionRowStyles/index.ts +++ b/src/styles/utils/optionRowStyles/index.ts @@ -1,4 +1,4 @@ -import CompactContentContainerStyles from './types'; +import type CompactContentContainerStyles from './types'; const compactContentContainerStyles: CompactContentContainerStyles = (styles) => styles.alignItemsBaseline; diff --git a/src/styles/utils/optionRowStyles/types.ts b/src/styles/utils/optionRowStyles/types.ts index a31b94e0fc79..5ba49b9a02a2 100644 --- a/src/styles/utils/optionRowStyles/types.ts +++ b/src/styles/utils/optionRowStyles/types.ts @@ -1,5 +1,5 @@ -import {ViewStyle} from 'react-native'; -import {type ThemeStyles} from '@styles/index'; +import type {ViewStyle} from 'react-native'; +import type {ThemeStyles} from '@styles/index'; type CompactContentContainerStyles = (styles: ThemeStyles) => ViewStyle; diff --git a/src/styles/utils/overflow.ts b/src/styles/utils/overflow.ts index 9b4fa010af84..74d1dd96f852 100644 --- a/src/styles/utils/overflow.ts +++ b/src/styles/utils/overflow.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; import overflowAuto from './overflowAuto'; import overscrollBehaviorContain from './overscrollBehaviorContain'; diff --git a/src/styles/utils/overflowAuto/index.native.ts b/src/styles/utils/overflowAuto/index.native.ts index 34ee18db1d0a..7db324a39c8f 100644 --- a/src/styles/utils/overflowAuto/index.native.ts +++ b/src/styles/utils/overflowAuto/index.native.ts @@ -1,4 +1,4 @@ -import OverflowAutoStyles from './types'; +import type OverflowAutoStyles from './types'; // Overflow auto doesn't exist in react-native so we'll default to overflow: visible const overflowAuto: OverflowAutoStyles = { diff --git a/src/styles/utils/overflowAuto/index.ts b/src/styles/utils/overflowAuto/index.ts index 1e7ac8ed8246..670a0b9643eb 100644 --- a/src/styles/utils/overflowAuto/index.ts +++ b/src/styles/utils/overflowAuto/index.ts @@ -1,5 +1,5 @@ -import {ViewStyle} from 'react-native'; -import OverflowAutoStyles from './types'; +import type {ViewStyle} from 'react-native'; +import type OverflowAutoStyles from './types'; /** * Web-only style. diff --git a/src/styles/utils/overflowAuto/types.ts b/src/styles/utils/overflowAuto/types.ts index da7548d49e7b..e91d5ce7d2c3 100644 --- a/src/styles/utils/overflowAuto/types.ts +++ b/src/styles/utils/overflowAuto/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type OverflowAutoStyles = Pick; diff --git a/src/styles/utils/overflowXHidden/index.native.ts b/src/styles/utils/overflowXHidden/index.native.ts index 3a2f61893d94..5455893d452c 100644 --- a/src/styles/utils/overflowXHidden/index.native.ts +++ b/src/styles/utils/overflowXHidden/index.native.ts @@ -1,4 +1,4 @@ -import OverflowXHiddenStyles from './types'; +import type OverflowXHiddenStyles from './types'; const overflowXHidden: OverflowXHiddenStyles = {}; diff --git a/src/styles/utils/overflowXHidden/index.ts b/src/styles/utils/overflowXHidden/index.ts index 6807be275be9..e83e0c824f9a 100644 --- a/src/styles/utils/overflowXHidden/index.ts +++ b/src/styles/utils/overflowXHidden/index.ts @@ -1,4 +1,4 @@ -import OverflowXHiddenStyles from './types'; +import type OverflowXHiddenStyles from './types'; const overflowXHidden: OverflowXHiddenStyles = { overflowX: 'hidden', diff --git a/src/styles/utils/overflowXHidden/types.ts b/src/styles/utils/overflowXHidden/types.ts index 0f13ba552c0c..fb01fc68cb96 100644 --- a/src/styles/utils/overflowXHidden/types.ts +++ b/src/styles/utils/overflowXHidden/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type OverflowXHiddenStyles = Pick; diff --git a/src/styles/utils/overscrollBehaviorContain/index.native.ts b/src/styles/utils/overscrollBehaviorContain/index.native.ts index fd6b2f496912..a48b97807ba0 100644 --- a/src/styles/utils/overscrollBehaviorContain/index.native.ts +++ b/src/styles/utils/overscrollBehaviorContain/index.native.ts @@ -1,4 +1,4 @@ -import OverscrollBehaviorStyles from './types'; +import type OverscrollBehaviorStyles from './types'; const overscrollBehaviorContain: OverscrollBehaviorStyles = {}; diff --git a/src/styles/utils/overscrollBehaviorContain/index.ts b/src/styles/utils/overscrollBehaviorContain/index.ts index 18cbe810d336..86d3882824d8 100644 --- a/src/styles/utils/overscrollBehaviorContain/index.ts +++ b/src/styles/utils/overscrollBehaviorContain/index.ts @@ -1,4 +1,4 @@ -import OverscrollBehaviorStyles from './types'; +import type OverscrollBehaviorStyles from './types'; const overscrollBehaviorContain: OverscrollBehaviorStyles = { overscrollBehavior: 'contain', diff --git a/src/styles/utils/overscrollBehaviorContain/types.ts b/src/styles/utils/overscrollBehaviorContain/types.ts index 1e806eb60642..b608972b892b 100644 --- a/src/styles/utils/overscrollBehaviorContain/types.ts +++ b/src/styles/utils/overscrollBehaviorContain/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type OverscrollBehaviorStyles = Pick; diff --git a/src/styles/utils/pointerEventsAuto/index.native.ts b/src/styles/utils/pointerEventsAuto/index.native.ts index cbefa643d1e0..5b53c54d28f5 100644 --- a/src/styles/utils/pointerEventsAuto/index.native.ts +++ b/src/styles/utils/pointerEventsAuto/index.native.ts @@ -1,4 +1,4 @@ -import PointerEventsAutoStyles from './types'; +import type PointerEventsAutoStyles from './types'; const pointerEventsAuto: PointerEventsAutoStyles = {}; diff --git a/src/styles/utils/pointerEventsAuto/index.ts b/src/styles/utils/pointerEventsAuto/index.ts index 8abda90caafe..f7ba29ef5fbb 100644 --- a/src/styles/utils/pointerEventsAuto/index.ts +++ b/src/styles/utils/pointerEventsAuto/index.ts @@ -1,4 +1,4 @@ -import PointerEventsAutoStyles from './types'; +import type PointerEventsAutoStyles from './types'; const pointerEventsAuto: PointerEventsAutoStyles = { pointerEvents: 'auto', diff --git a/src/styles/utils/pointerEventsAuto/types.ts b/src/styles/utils/pointerEventsAuto/types.ts index 0ecbc851e000..253d892aacf8 100644 --- a/src/styles/utils/pointerEventsAuto/types.ts +++ b/src/styles/utils/pointerEventsAuto/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type PointerEventsAutoStyles = Pick; diff --git a/src/styles/utils/pointerEventsBoxNone/index.native.ts b/src/styles/utils/pointerEventsBoxNone/index.native.ts index 05ad2c07db39..0b59172395a1 100644 --- a/src/styles/utils/pointerEventsBoxNone/index.native.ts +++ b/src/styles/utils/pointerEventsBoxNone/index.native.ts @@ -1,4 +1,4 @@ -import PointerEventsBoxNone from './types'; +import type PointerEventsBoxNone from './types'; const pointerEventsBoxNone: PointerEventsBoxNone = {}; diff --git a/src/styles/utils/pointerEventsBoxNone/index.ts b/src/styles/utils/pointerEventsBoxNone/index.ts index 0e63e2deda09..4aa0972424b2 100644 --- a/src/styles/utils/pointerEventsBoxNone/index.ts +++ b/src/styles/utils/pointerEventsBoxNone/index.ts @@ -1,4 +1,4 @@ -import PointerEventsBoxNone from './types'; +import type PointerEventsBoxNone from './types'; const pointerEventsNone: PointerEventsBoxNone = { pointerEvents: 'box-none', diff --git a/src/styles/utils/pointerEventsBoxNone/types.ts b/src/styles/utils/pointerEventsBoxNone/types.ts index 25e85812f4e0..05c686640b3a 100644 --- a/src/styles/utils/pointerEventsBoxNone/types.ts +++ b/src/styles/utils/pointerEventsBoxNone/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type PointerEventsBoxNone = Pick; diff --git a/src/styles/utils/pointerEventsNone/index.native.ts b/src/styles/utils/pointerEventsNone/index.native.ts index d92936025c94..1503fd9f68f0 100644 --- a/src/styles/utils/pointerEventsNone/index.native.ts +++ b/src/styles/utils/pointerEventsNone/index.native.ts @@ -1,4 +1,4 @@ -import PointerEventsNone from './types'; +import type PointerEventsNone from './types'; const pointerEventsNone: PointerEventsNone = {}; diff --git a/src/styles/utils/pointerEventsNone/index.ts b/src/styles/utils/pointerEventsNone/index.ts index 20dc46412e6d..fe535ad5e54b 100644 --- a/src/styles/utils/pointerEventsNone/index.ts +++ b/src/styles/utils/pointerEventsNone/index.ts @@ -1,4 +1,4 @@ -import PointerEventsNone from './types'; +import type PointerEventsNone from './types'; const pointerEventsNone: PointerEventsNone = { pointerEvents: 'none', diff --git a/src/styles/utils/pointerEventsNone/types.ts b/src/styles/utils/pointerEventsNone/types.ts index 766ac3f94349..34c31873df5b 100644 --- a/src/styles/utils/pointerEventsNone/types.ts +++ b/src/styles/utils/pointerEventsNone/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type PointerEventsNone = Pick; diff --git a/src/styles/utils/positioning.ts b/src/styles/utils/positioning.ts index 26e6198a5827..5e0169990499 100644 --- a/src/styles/utils/positioning.ts +++ b/src/styles/utils/positioning.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; /** * Positioning utilities for absolute-positioned components. diff --git a/src/styles/utils/sizing.ts b/src/styles/utils/sizing.ts index 212d532c1b23..e7273f7b2b18 100644 --- a/src/styles/utils/sizing.ts +++ b/src/styles/utils/sizing.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; /** * Sizing utility styles with Bootstrap inspired naming. diff --git a/src/styles/utils/spacing.ts b/src/styles/utils/spacing.ts index b2597fc64603..27d70529dd8a 100644 --- a/src/styles/utils/spacing.ts +++ b/src/styles/utils/spacing.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; /** * Spacing utility styles with Bootstrap inspired naming. diff --git a/src/styles/utils/textDecorationLine.ts b/src/styles/utils/textDecorationLine.ts index 02e7db41e10a..e5f079150e78 100644 --- a/src/styles/utils/textDecorationLine.ts +++ b/src/styles/utils/textDecorationLine.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; export default { lineThrough: { diff --git a/src/styles/utils/textUnderline/index.native.ts b/src/styles/utils/textUnderline/index.native.ts index b3acbb48d01c..c658b2a3df86 100644 --- a/src/styles/utils/textUnderline/index.native.ts +++ b/src/styles/utils/textUnderline/index.native.ts @@ -1,4 +1,4 @@ -import TextUnderlineStyles from './types'; +import type TextUnderlineStyles from './types'; // following styles are not supported const textUnderline: TextUnderlineStyles = { diff --git a/src/styles/utils/textUnderline/index.ts b/src/styles/utils/textUnderline/index.ts index 2fbf6e0e354c..0dd06f004306 100644 --- a/src/styles/utils/textUnderline/index.ts +++ b/src/styles/utils/textUnderline/index.ts @@ -1,4 +1,4 @@ -import TextUnderlineStyles from './types'; +import type TextUnderlineStyles from './types'; const textUnderline: TextUnderlineStyles = { textUnderlinePositionUnder: { diff --git a/src/styles/utils/textUnderline/types.ts b/src/styles/utils/textUnderline/types.ts index f71d2bfdaa9a..0b103a0fb98e 100644 --- a/src/styles/utils/textUnderline/types.ts +++ b/src/styles/utils/textUnderline/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type TextUnderlineStyles = { textUnderlinePositionUnder: Pick; diff --git a/src/styles/utils/types.ts b/src/styles/utils/types.ts index 40a261beee71..5fe844f0f358 100644 --- a/src/styles/utils/types.ts +++ b/src/styles/utils/types.ts @@ -1,5 +1,5 @@ -import {ImageStyle, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native'; -import {ValueOf} from 'type-fest'; +import type {ImageStyle, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import type {ValueOf} from 'type-fest'; import type colors from '@styles/theme/colors'; import type variables from '@styles/variables'; import type CONST from '@src/CONST'; diff --git a/src/styles/utils/userSelect/index.native.ts b/src/styles/utils/userSelect/index.native.ts index 0d1a34ef2473..05e3c8996f4a 100644 --- a/src/styles/utils/userSelect/index.native.ts +++ b/src/styles/utils/userSelect/index.native.ts @@ -1,4 +1,4 @@ -import UserSelectStyles from './types'; +import type UserSelectStyles from './types'; const userSelect: UserSelectStyles = { userSelectText: { diff --git a/src/styles/utils/userSelect/index.ts b/src/styles/utils/userSelect/index.ts index 6b9f26131b5e..79eec6d3b139 100644 --- a/src/styles/utils/userSelect/index.ts +++ b/src/styles/utils/userSelect/index.ts @@ -1,4 +1,4 @@ -import UserSelectStyles from './types'; +import type UserSelectStyles from './types'; const userSelect: UserSelectStyles = { userSelectText: { diff --git a/src/styles/utils/userSelect/types.ts b/src/styles/utils/userSelect/types.ts index a177bac5a3e7..74a4a7bbde9a 100644 --- a/src/styles/utils/userSelect/types.ts +++ b/src/styles/utils/userSelect/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type UserSelectStyles = Record<'userSelectText' | 'userSelectNone', Pick>; diff --git a/src/styles/utils/visibility/index.native.ts b/src/styles/utils/visibility/index.native.ts index c74719d02184..79ea2f345cf6 100644 --- a/src/styles/utils/visibility/index.native.ts +++ b/src/styles/utils/visibility/index.native.ts @@ -1,4 +1,4 @@ -import VisibilityStyles from './types'; +import type VisibilityStyles from './types'; const visibility: VisibilityStyles = { visible: {}, diff --git a/src/styles/utils/visibility/index.ts b/src/styles/utils/visibility/index.ts index 8e2d3451be43..f0743a481647 100644 --- a/src/styles/utils/visibility/index.ts +++ b/src/styles/utils/visibility/index.ts @@ -1,4 +1,4 @@ -import VisibilityStyles from './types'; +import type VisibilityStyles from './types'; const visibility: VisibilityStyles = { visible: { diff --git a/src/styles/utils/visibility/types.ts b/src/styles/utils/visibility/types.ts index 64bdbdd2cca6..93761babeade 100644 --- a/src/styles/utils/visibility/types.ts +++ b/src/styles/utils/visibility/types.ts @@ -1,4 +1,4 @@ -import {ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; type VisibilityStyles = Record<'visible' | 'hidden', Pick>; diff --git a/src/styles/utils/whiteSpace/index.native.ts b/src/styles/utils/whiteSpace/index.native.ts index 420bda325c6a..cf02b0e9ff42 100644 --- a/src/styles/utils/whiteSpace/index.native.ts +++ b/src/styles/utils/whiteSpace/index.native.ts @@ -1,4 +1,4 @@ -import WhiteSpaceStyles from './types'; +import type WhiteSpaceStyles from './types'; const whiteSpace: WhiteSpaceStyles = { noWrap: {}, diff --git a/src/styles/utils/whiteSpace/index.ts b/src/styles/utils/whiteSpace/index.ts index dd0ef94d12b0..ad736d233fdb 100644 --- a/src/styles/utils/whiteSpace/index.ts +++ b/src/styles/utils/whiteSpace/index.ts @@ -1,4 +1,4 @@ -import WhiteSpaceStyles from './types'; +import type WhiteSpaceStyles from './types'; const whiteSpace: WhiteSpaceStyles = { noWrap: { diff --git a/src/styles/utils/whiteSpace/types.ts b/src/styles/utils/whiteSpace/types.ts index b10671f04977..5fa98ad506d0 100644 --- a/src/styles/utils/whiteSpace/types.ts +++ b/src/styles/utils/whiteSpace/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type WhiteSpaceStyles = Record<'noWrap' | 'preWrap' | 'pre', Pick>; diff --git a/src/styles/utils/wordBreak/index.native.ts b/src/styles/utils/wordBreak/index.native.ts index c4575c51d3f2..0afdda99d0d9 100644 --- a/src/styles/utils/wordBreak/index.native.ts +++ b/src/styles/utils/wordBreak/index.native.ts @@ -1,4 +1,4 @@ -import WordBreakStyles from './types'; +import type WordBreakStyles from './types'; const wordBreak: WordBreakStyles = { breakWord: {}, diff --git a/src/styles/utils/wordBreak/index.ts b/src/styles/utils/wordBreak/index.ts index 4da23e0f074a..b224fe472181 100644 --- a/src/styles/utils/wordBreak/index.ts +++ b/src/styles/utils/wordBreak/index.ts @@ -1,4 +1,4 @@ -import WordBreakStyles from './types'; +import type WordBreakStyles from './types'; const wordBreak: WordBreakStyles = { breakWord: { diff --git a/src/styles/utils/wordBreak/types.ts b/src/styles/utils/wordBreak/types.ts index 0ed520ae119d..2e81d1aac449 100644 --- a/src/styles/utils/wordBreak/types.ts +++ b/src/styles/utils/wordBreak/types.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; type WordBreakStyles = Record<'breakWord' | 'breakAll', Pick>; diff --git a/src/styles/utils/writingDirection.ts b/src/styles/utils/writingDirection.ts index f3f249796047..e385e8bd9a6d 100644 --- a/src/styles/utils/writingDirection.ts +++ b/src/styles/utils/writingDirection.ts @@ -1,4 +1,4 @@ -import {TextStyle} from 'react-native'; +import type {TextStyle} from 'react-native'; /** * Writing direction utility styles. diff --git a/src/types/modules/pusher.d.ts b/src/types/modules/pusher.d.ts index 9705ec4935c8..676d7a7ee2fc 100644 --- a/src/types/modules/pusher.d.ts +++ b/src/types/modules/pusher.d.ts @@ -1,4 +1,4 @@ -import Pusher from 'pusher-js/types/src/core/pusher'; +import type Pusher from 'pusher-js/types/src/core/pusher'; declare global { // eslint-disable-next-line @typescript-eslint/consistent-type-definitions diff --git a/src/types/modules/react-native-onyx.d.ts b/src/types/modules/react-native-onyx.d.ts index d603b9f93ae8..05302577910b 100644 --- a/src/types/modules/react-native-onyx.d.ts +++ b/src/types/modules/react-native-onyx.d.ts @@ -1,4 +1,4 @@ -import {OnyxCollectionKey, OnyxKey, OnyxValues} from '@src/ONYXKEYS'; +import type {OnyxCollectionKey, OnyxKey, OnyxValues} from '@src/ONYXKEYS'; declare module 'react-native-onyx' { // eslint-disable-next-line @typescript-eslint/consistent-type-definitions diff --git a/src/types/modules/react-native-svg.d.ts b/src/types/modules/react-native-svg.d.ts index 4adc164fa853..0d98870b04b2 100644 --- a/src/types/modules/react-native-svg.d.ts +++ b/src/types/modules/react-native-svg.d.ts @@ -1,4 +1,4 @@ -import {CommonPathProps as BaseCommonPathProps, SvgProps as BaseSvgProps} from 'react-native-svg'; +import type {CommonPathProps as BaseCommonPathProps, SvgProps as BaseSvgProps} from 'react-native-svg'; declare module 'react-native-svg' { // eslint-disable-next-line @typescript-eslint/consistent-type-definitions diff --git a/src/types/modules/react-native.d.ts b/src/types/modules/react-native.d.ts index 25ff1c6c73b8..8175a3631354 100644 --- a/src/types/modules/react-native.d.ts +++ b/src/types/modules/react-native.d.ts @@ -4,9 +4,9 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ // eslint-disable-next-line no-restricted-imports -import {CSSProperties, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, PointerEventHandler, UIEventHandler, WheelEventHandler} from 'react'; +import type {CSSProperties, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, PointerEventHandler, UIEventHandler, WheelEventHandler} from 'react'; import 'react-native'; -import {BootSplashModule} from '@libs/BootSplash/types'; +import type {BootSplashModule} from '@libs/BootSplash/types'; declare module 'react-native' { // <------ REACT NATIVE WEB (0.19.0) ------> diff --git a/src/types/modules/react-navigation.d.ts b/src/types/modules/react-navigation.d.ts index 1ac35c937116..f6a47f3cdb9a 100644 --- a/src/types/modules/react-navigation.d.ts +++ b/src/types/modules/react-navigation.d.ts @@ -1,4 +1,4 @@ -import {RootStackParamList} from '@libs/Navigation/types'; +import type {RootStackParamList} from '@libs/Navigation/types'; declare global { namespace ReactNavigation { diff --git a/src/types/modules/react.d.ts b/src/types/modules/react.d.ts index 0608a59b4702..3e2e8fb37aa8 100644 --- a/src/types/modules/react.d.ts +++ b/src/types/modules/react.d.ts @@ -1,4 +1,4 @@ -import React from 'react'; +import type React from 'react'; declare module 'react' { // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/src/types/onyx/Account.ts b/src/types/onyx/Account.ts index 8093642a7111..0ea3e05e8d6a 100644 --- a/src/types/onyx/Account.ts +++ b/src/types/onyx/Account.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; type TwoFactorAuthStep = ValueOf | ''; diff --git a/src/types/onyx/AccountData.ts b/src/types/onyx/AccountData.ts index 601e82cde836..88511eec6864 100644 --- a/src/types/onyx/AccountData.ts +++ b/src/types/onyx/AccountData.ts @@ -1,5 +1,5 @@ -import {BankName} from './Bank'; -import * as OnyxCommon from './OnyxCommon'; +import type {BankName} from './Bank'; +import type * as OnyxCommon from './OnyxCommon'; type AdditionalData = { isP2PDebitCard?: boolean; diff --git a/src/types/onyx/Bank.ts b/src/types/onyx/Bank.ts index 533458c88b49..72b5fcda4788 100644 --- a/src/types/onyx/Bank.ts +++ b/src/types/onyx/Bank.ts @@ -1,7 +1,7 @@ -import {ViewStyle} from 'react-native'; -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import IconAsset from '@src/types/utils/IconAsset'; +import type {ViewStyle} from 'react-native'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type IconAsset from '@src/types/utils/IconAsset'; type BankIcon = { icon: IconAsset; diff --git a/src/types/onyx/BankAccount.ts b/src/types/onyx/BankAccount.ts index 8e26faf518cb..b9d541b72f2e 100644 --- a/src/types/onyx/BankAccount.ts +++ b/src/types/onyx/BankAccount.ts @@ -1,6 +1,6 @@ -import CONST from '@src/CONST'; -import AccountData from './AccountData'; -import * as OnyxCommon from './OnyxCommon'; +import type CONST from '@src/CONST'; +import type AccountData from './AccountData'; +import type * as OnyxCommon from './OnyxCommon'; type AdditionalData = { isP2PDebitCard?: boolean; diff --git a/src/types/onyx/Beta.ts b/src/types/onyx/Beta.ts index 9216946499e8..35ed4c804ab8 100644 --- a/src/types/onyx/Beta.ts +++ b/src/types/onyx/Beta.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type Beta = ValueOf; diff --git a/src/types/onyx/Card.ts b/src/types/onyx/Card.ts index ae4e86212a00..e3b025ff5a2f 100644 --- a/src/types/onyx/Card.ts +++ b/src/types/onyx/Card.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; type Card = { cardID: number; diff --git a/src/types/onyx/Form.ts b/src/types/onyx/Form.ts index 7b7d8d76536a..ca8d6574adf5 100644 --- a/src/types/onyx/Form.ts +++ b/src/types/onyx/Form.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type Form = { /** Controls the loading state of the form */ diff --git a/src/types/onyx/Fund.ts b/src/types/onyx/Fund.ts index e889a414062e..842a882ff23f 100644 --- a/src/types/onyx/Fund.ts +++ b/src/types/onyx/Fund.ts @@ -1,6 +1,6 @@ -import CONST from '@src/CONST'; -import {BankName} from './Bank'; -import * as OnyxCommon from './OnyxCommon'; +import type CONST from '@src/CONST'; +import type {BankName} from './Bank'; +import type * as OnyxCommon from './OnyxCommon'; type AdditionalData = { isBillingCard?: boolean; diff --git a/src/types/onyx/Locale.ts b/src/types/onyx/Locale.ts index 1a5124684995..89d7636009d7 100644 --- a/src/types/onyx/Locale.ts +++ b/src/types/onyx/Locale.ts @@ -1,5 +1,5 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; type Locale = ValueOf; diff --git a/src/types/onyx/Login.ts b/src/types/onyx/Login.ts index bcf949eb95e6..7a4093d4ab11 100644 --- a/src/types/onyx/Login.ts +++ b/src/types/onyx/Login.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type Login = { /** Phone/Email associated with user */ diff --git a/src/types/onyx/OnyxCommon.ts b/src/types/onyx/OnyxCommon.ts index 956e9ff36b24..b26dc167ed44 100644 --- a/src/types/onyx/OnyxCommon.ts +++ b/src/types/onyx/OnyxCommon.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import {AvatarSource} from '@libs/UserUtils'; -import CONST from '@src/CONST'; +import type {ValueOf} from 'type-fest'; +import type {AvatarSource} from '@libs/UserUtils'; +import type CONST from '@src/CONST'; type PendingAction = ValueOf; diff --git a/src/types/onyx/OnyxUpdatesFromServer.ts b/src/types/onyx/OnyxUpdatesFromServer.ts index 843d3ae86e46..b3932bbb7841 100644 --- a/src/types/onyx/OnyxUpdatesFromServer.ts +++ b/src/types/onyx/OnyxUpdatesFromServer.ts @@ -1,6 +1,6 @@ -import {OnyxUpdate} from 'react-native-onyx'; -import Request from './Request'; -import Response from './Response'; +import type {OnyxUpdate} from 'react-native-onyx'; +import type Request from './Request'; +import type Response from './Response'; type OnyxServerUpdate = OnyxUpdate & {shouldNotify?: boolean}; diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index 767f724dd571..c4e30157bf6f 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import DeepValueOf from '@src/types/utils/DeepValueOf'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type DeepValueOf from '@src/types/utils/DeepValueOf'; type ActionName = DeepValueOf; type OriginalMessageActionName = diff --git a/src/types/onyx/PaymentMethod.ts b/src/types/onyx/PaymentMethod.ts index c9645e01983b..4b3a4c8986fb 100644 --- a/src/types/onyx/PaymentMethod.ts +++ b/src/types/onyx/PaymentMethod.ts @@ -1,7 +1,7 @@ -import {ViewStyle} from 'react-native'; -import IconAsset from '@src/types/utils/IconAsset'; -import BankAccount from './BankAccount'; -import Fund from './Fund'; +import type {ViewStyle} from 'react-native'; +import type IconAsset from '@src/types/utils/IconAsset'; +import type BankAccount from './BankAccount'; +import type Fund from './Fund'; type PaymentMethod = (BankAccount | Fund) & { description: string; diff --git a/src/types/onyx/PersonalBankAccount.ts b/src/types/onyx/PersonalBankAccount.ts index 865f41bebbeb..8eb6d327f13c 100644 --- a/src/types/onyx/PersonalBankAccount.ts +++ b/src/types/onyx/PersonalBankAccount.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type PersonalBankAccount = { /** An error message to display to the user */ diff --git a/src/types/onyx/PersonalDetails.ts b/src/types/onyx/PersonalDetails.ts index 03aa7e4ec928..baf3b9d3801a 100644 --- a/src/types/onyx/PersonalDetails.ts +++ b/src/types/onyx/PersonalDetails.ts @@ -1,6 +1,6 @@ -import {AvatarSource} from '@libs/UserUtils'; -import TIMEZONES from '@src/TIMEZONES'; -import * as OnyxCommon from './OnyxCommon'; +import type {AvatarSource} from '@libs/UserUtils'; +import type TIMEZONES from '@src/TIMEZONES'; +import type * as OnyxCommon from './OnyxCommon'; type SelectedTimezone = (typeof TIMEZONES)[number]; diff --git a/src/types/onyx/PlaidData.ts b/src/types/onyx/PlaidData.ts index 28a1cb324bcb..8ec93119cbd8 100644 --- a/src/types/onyx/PlaidData.ts +++ b/src/types/onyx/PlaidData.ts @@ -1,5 +1,5 @@ -import * as OnyxCommon from './OnyxCommon'; -import PlaidBankAccount from './PlaidBankAccount'; +import type * as OnyxCommon from './OnyxCommon'; +import type PlaidBankAccount from './PlaidBankAccount'; type PlaidData = { /** Name of the bank */ diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts index 685fcd5e05d5..ff3a5e1dd23c 100644 --- a/src/types/onyx/Policy.ts +++ b/src/types/onyx/Policy.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; type Unit = 'mi' | 'km'; diff --git a/src/types/onyx/PolicyMember.ts b/src/types/onyx/PolicyMember.ts index 60836b276ea0..6439888b9144 100644 --- a/src/types/onyx/PolicyMember.ts +++ b/src/types/onyx/PolicyMember.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type PolicyMember = { /** Role of the user in the policy */ diff --git a/src/types/onyx/ReimbursementAccount.ts b/src/types/onyx/ReimbursementAccount.ts index 75954983371e..c0ade25e4d79 100644 --- a/src/types/onyx/ReimbursementAccount.ts +++ b/src/types/onyx/ReimbursementAccount.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; type BankAccountStep = ValueOf; diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts index b274025908f5..840bbd1e2e2f 100644 --- a/src/types/onyx/Report.ts +++ b/src/types/onyx/Report.ts @@ -1,7 +1,7 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; -import PersonalDetails from './PersonalDetails'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; +import type PersonalDetails from './PersonalDetails'; type NotificationPreference = ValueOf; diff --git a/src/types/onyx/ReportAction.ts b/src/types/onyx/ReportAction.ts index a881b63fbb95..b727bc40ce93 100644 --- a/src/types/onyx/ReportAction.ts +++ b/src/types/onyx/ReportAction.ts @@ -1,11 +1,12 @@ -import {ValueOf} from 'type-fest'; -import {AvatarSource} from '@libs/UserUtils'; -import CONST from '@src/CONST'; -import {EmptyObject} from '@src/types/utils/EmptyObject'; -import * as OnyxCommon from './OnyxCommon'; -import OriginalMessage, {Decision, Reaction} from './OriginalMessage'; -import {NotificationPreference} from './Report'; -import {Receipt} from './Transaction'; +import type {ValueOf} from 'type-fest'; +import type {AvatarSource} from '@libs/UserUtils'; +import type CONST from '@src/CONST'; +import type {EmptyObject} from '@src/types/utils/EmptyObject'; +import type * as OnyxCommon from './OnyxCommon'; +import type {Decision, Reaction} from './OriginalMessage'; +import type OriginalMessage from './OriginalMessage'; +import type {NotificationPreference} from './Report'; +import type {Receipt} from './Transaction'; type Message = { /** The type of the action item fragment. Used to render a corresponding component */ diff --git a/src/types/onyx/ReportActionReactions.ts b/src/types/onyx/ReportActionReactions.ts index 348a4b1baf62..be117aafc4c5 100644 --- a/src/types/onyx/ReportActionReactions.ts +++ b/src/types/onyx/ReportActionReactions.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type UserReaction = { /** ID of user reaction */ diff --git a/src/types/onyx/ReportActionsDrafts.ts b/src/types/onyx/ReportActionsDrafts.ts index ad2782111144..70d16c62a3bc 100644 --- a/src/types/onyx/ReportActionsDrafts.ts +++ b/src/types/onyx/ReportActionsDrafts.ts @@ -1,4 +1,4 @@ -import ReportActionsDraft from './ReportActionsDraft'; +import type ReportActionsDraft from './ReportActionsDraft'; type ReportActionsDrafts = Record; diff --git a/src/types/onyx/Request.ts b/src/types/onyx/Request.ts index 746e7f75b3d5..fa87e1d194c2 100644 --- a/src/types/onyx/Request.ts +++ b/src/types/onyx/Request.ts @@ -1,5 +1,5 @@ -import {OnyxUpdate} from 'react-native-onyx'; -import Response from './Response'; +import type {OnyxUpdate} from 'react-native-onyx'; +import type Response from './Response'; type OnyxData = { successData?: OnyxUpdate[]; diff --git a/src/types/onyx/Response.ts b/src/types/onyx/Response.ts index 66d5dcbdfd5b..b06ec9766842 100644 --- a/src/types/onyx/Response.ts +++ b/src/types/onyx/Response.ts @@ -1,4 +1,4 @@ -import {OnyxUpdate} from 'react-native-onyx'; +import type {OnyxUpdate} from 'react-native-onyx'; type Data = { phpCommandName: string; diff --git a/src/types/onyx/Session.ts b/src/types/onyx/Session.ts index aa4d52075d34..e17bfaf1c2b9 100644 --- a/src/types/onyx/Session.ts +++ b/src/types/onyx/Session.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; type AutoAuthState = ValueOf; diff --git a/src/types/onyx/Task.ts b/src/types/onyx/Task.ts index 9d5c83ee4a40..804be21d3e1c 100644 --- a/src/types/onyx/Task.ts +++ b/src/types/onyx/Task.ts @@ -1,4 +1,4 @@ -import Report from './Report'; +import type Report from './Report'; type Task = { /** Title of the Task */ diff --git a/src/types/onyx/Transaction.ts b/src/types/onyx/Transaction.ts index 53bfc36a4e47..8b7e26280305 100644 --- a/src/types/onyx/Transaction.ts +++ b/src/types/onyx/Transaction.ts @@ -1,7 +1,7 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; -import RecentWaypoint from './RecentWaypoint'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; +import type RecentWaypoint from './RecentWaypoint'; type Waypoint = { /** The name associated with the address of the waypoint */ diff --git a/src/types/onyx/UserWallet.ts b/src/types/onyx/UserWallet.ts index 501e05a31ad0..1b903792912c 100644 --- a/src/types/onyx/UserWallet.ts +++ b/src/types/onyx/UserWallet.ts @@ -1,6 +1,6 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; type WalletLinkedAccountType = 'debitCard' | 'bankAccount'; diff --git a/src/types/onyx/WalletAdditionalDetails.ts b/src/types/onyx/WalletAdditionalDetails.ts index e766ba4cfe50..da890b36bfef 100644 --- a/src/types/onyx/WalletAdditionalDetails.ts +++ b/src/types/onyx/WalletAdditionalDetails.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type WalletAdditionalDetails = { /** Questions returned by Idology */ diff --git a/src/types/onyx/WalletOnfido.ts b/src/types/onyx/WalletOnfido.ts index 7a65c0f710ef..bea6db81a87d 100644 --- a/src/types/onyx/WalletOnfido.ts +++ b/src/types/onyx/WalletOnfido.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type WalletOnfido = { /** Unique identifier returned from openOnfidoFlow then re-sent to ActivateWallet with Onfido response data */ diff --git a/src/types/onyx/WalletTerms.ts b/src/types/onyx/WalletTerms.ts index 5394f126c33c..b60a880e0aa0 100644 --- a/src/types/onyx/WalletTerms.ts +++ b/src/types/onyx/WalletTerms.ts @@ -1,4 +1,4 @@ -import * as OnyxCommon from './OnyxCommon'; +import type * as OnyxCommon from './OnyxCommon'; type WalletTerms = { /** Any error message to show */ diff --git a/src/types/onyx/WalletTransfer.ts b/src/types/onyx/WalletTransfer.ts index cebea543884b..3151ecb3ad5c 100644 --- a/src/types/onyx/WalletTransfer.ts +++ b/src/types/onyx/WalletTransfer.ts @@ -1,7 +1,7 @@ -import {ValueOf} from 'type-fest'; -import CONST from '@src/CONST'; -import * as OnyxCommon from './OnyxCommon'; -import PaymentMethod from './PaymentMethod'; +import type {ValueOf} from 'type-fest'; +import type CONST from '@src/CONST'; +import type * as OnyxCommon from './OnyxCommon'; +import type PaymentMethod from './PaymentMethod'; type WalletTransfer = { /** Selected accountID for transfer */ diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index efa1ae1fe630..de71202dcc2a 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -1,62 +1,71 @@ -import Account from './Account'; -import AccountData from './AccountData'; -import BankAccount, {BankAccountList} from './BankAccount'; -import Beta from './Beta'; -import BlockedFromConcierge from './BlockedFromConcierge'; -import Card from './Card'; -import Credentials from './Credentials'; -import Currency from './Currency'; -import CustomStatusDraft from './CustomStatusDraft'; -import Download from './Download'; -import Form, {AddDebitCardForm, DateOfBirthForm} from './Form'; -import FrequentlyUsedEmoji from './FrequentlyUsedEmoji'; -import Fund, {FundList} from './Fund'; -import IOU from './IOU'; -import Locale from './Locale'; -import Login, {LoginList} from './Login'; -import MapboxAccessToken from './MapboxAccessToken'; -import Modal from './Modal'; -import Network from './Network'; -import {OnyxUpdateEvent, OnyxUpdatesFromServer} from './OnyxUpdatesFromServer'; -import PersonalBankAccount from './PersonalBankAccount'; -import PersonalDetails, {PersonalDetailsList} from './PersonalDetails'; -import PlaidData from './PlaidData'; -import Policy from './Policy'; -import PolicyCategory, {PolicyCategories} from './PolicyCategory'; -import PolicyMember, {PolicyMembers} from './PolicyMember'; -import PolicyReportField from './PolicyReportField'; -import PolicyTag, {PolicyTags} from './PolicyTag'; -import PrivatePersonalDetails from './PrivatePersonalDetails'; -import RecentlyUsedCategories from './RecentlyUsedCategories'; -import RecentlyUsedReportFields from './RecentlyUsedReportFields'; -import RecentlyUsedTags from './RecentlyUsedTags'; -import RecentWaypoint from './RecentWaypoint'; -import ReimbursementAccount from './ReimbursementAccount'; -import ReimbursementAccountDraft from './ReimbursementAccountDraft'; -import Report from './Report'; -import ReportAction, {ReportActions} from './ReportAction'; -import ReportActionReactions from './ReportActionReactions'; -import ReportActionsDraft from './ReportActionsDraft'; -import ReportActionsDrafts from './ReportActionsDrafts'; -import ReportMetadata from './ReportMetadata'; -import ReportNextStep from './ReportNextStep'; -import ReportUserIsTyping from './ReportUserIsTyping'; -import Request from './Request'; -import Response from './Response'; -import ScreenShareRequest from './ScreenShareRequest'; -import SecurityGroup from './SecurityGroup'; -import Session from './Session'; -import Task from './Task'; -import Transaction from './Transaction'; -import {TransactionViolation, ViolationName} from './TransactionViolation'; -import User from './User'; -import UserLocation from './UserLocation'; -import UserWallet from './UserWallet'; -import WalletAdditionalDetails from './WalletAdditionalDetails'; -import WalletOnfido from './WalletOnfido'; -import WalletStatement from './WalletStatement'; -import WalletTerms from './WalletTerms'; -import WalletTransfer from './WalletTransfer'; +import type Account from './Account'; +import type AccountData from './AccountData'; +import type {BankAccountList} from './BankAccount'; +import type BankAccount from './BankAccount'; +import type Beta from './Beta'; +import type BlockedFromConcierge from './BlockedFromConcierge'; +import type Card from './Card'; +import type Credentials from './Credentials'; +import type Currency from './Currency'; +import type CustomStatusDraft from './CustomStatusDraft'; +import type Download from './Download'; +import type {AddDebitCardForm, DateOfBirthForm} from './Form'; +import type Form from './Form'; +import type FrequentlyUsedEmoji from './FrequentlyUsedEmoji'; +import type {FundList} from './Fund'; +import type Fund from './Fund'; +import type IOU from './IOU'; +import type Locale from './Locale'; +import type {LoginList} from './Login'; +import type Login from './Login'; +import type MapboxAccessToken from './MapboxAccessToken'; +import type Modal from './Modal'; +import type Network from './Network'; +import type {OnyxUpdateEvent, OnyxUpdatesFromServer} from './OnyxUpdatesFromServer'; +import type PersonalBankAccount from './PersonalBankAccount'; +import type {PersonalDetailsList} from './PersonalDetails'; +import type PersonalDetails from './PersonalDetails'; +import type PlaidData from './PlaidData'; +import type Policy from './Policy'; +import type {PolicyCategories} from './PolicyCategory'; +import type PolicyCategory from './PolicyCategory'; +import type {PolicyMembers} from './PolicyMember'; +import type PolicyMember from './PolicyMember'; +import type PolicyReportField from './PolicyReportField'; +import type {PolicyTags} from './PolicyTag'; +import type PolicyTag from './PolicyTag'; +import type PrivatePersonalDetails from './PrivatePersonalDetails'; +import type RecentlyUsedCategories from './RecentlyUsedCategories'; +import type RecentlyUsedReportFields from './RecentlyUsedReportFields'; +import type RecentlyUsedTags from './RecentlyUsedTags'; +import type RecentWaypoint from './RecentWaypoint'; +import type ReimbursementAccount from './ReimbursementAccount'; +import type ReimbursementAccountDraft from './ReimbursementAccountDraft'; +import type Report from './Report'; +import type {ReportActions} from './ReportAction'; +import type ReportAction from './ReportAction'; +import type ReportActionReactions from './ReportActionReactions'; +import type ReportActionsDraft from './ReportActionsDraft'; +import type ReportActionsDrafts from './ReportActionsDrafts'; +import type ReportMetadata from './ReportMetadata'; +import type ReportNextStep from './ReportNextStep'; +import type ReportUserIsTyping from './ReportUserIsTyping'; +import type Request from './Request'; +import type Response from './Response'; +import type ScreenShareRequest from './ScreenShareRequest'; +import type SecurityGroup from './SecurityGroup'; +import type Session from './Session'; +import type Task from './Task'; +import type Transaction from './Transaction'; +import type {TransactionViolation, ViolationName} from './TransactionViolation'; +import type User from './User'; +import type UserLocation from './UserLocation'; +import type UserWallet from './UserWallet'; +import type WalletAdditionalDetails from './WalletAdditionalDetails'; +import type WalletOnfido from './WalletOnfido'; +import type WalletStatement from './WalletStatement'; +import type WalletTerms from './WalletTerms'; +import type WalletTransfer from './WalletTransfer'; export type { Account, diff --git a/src/types/utils/CustomRefObject.ts b/src/types/utils/CustomRefObject.ts index aa726d7a0f86..13bb0f27a42e 100644 --- a/src/types/utils/CustomRefObject.ts +++ b/src/types/utils/CustomRefObject.ts @@ -1,4 +1,4 @@ -import {RefObject} from 'react'; +import type {RefObject} from 'react'; type CustomRefObject = RefObject & {onselectstart: () => boolean}; diff --git a/src/types/utils/EmptyObject.ts b/src/types/utils/EmptyObject.ts index aa8b538499cd..48be674f3c5c 100644 --- a/src/types/utils/EmptyObject.ts +++ b/src/types/utils/EmptyObject.ts @@ -1,4 +1,4 @@ -import Falsy from './Falsy'; +import type Falsy from './Falsy'; type EmptyObject = Record; diff --git a/src/types/utils/IconAsset.ts b/src/types/utils/IconAsset.ts index 45a79b8286ef..f5d193aaa993 100644 --- a/src/types/utils/IconAsset.ts +++ b/src/types/utils/IconAsset.ts @@ -1,5 +1,5 @@ -import {ImageSourcePropType} from 'react-native'; -import {SvgProps} from 'react-native-svg/lib/typescript'; +import type {ImageSourcePropType} from 'react-native'; +import type {SvgProps} from 'react-native-svg/lib/typescript'; type IconAsset = React.FC | ImageSourcePropType; diff --git a/src/types/utils/textRef.ts b/src/types/utils/textRef.ts index df0235f4ac0b..4e80f00b7bc6 100644 --- a/src/types/utils/textRef.ts +++ b/src/types/utils/textRef.ts @@ -1,4 +1,4 @@ -import {Text} from 'react-native'; +import type {Text} from 'react-native'; const textRef = (ref: React.RefObject) => ref as React.RefObject; diff --git a/src/types/utils/viewForwardedRef.ts b/src/types/utils/viewForwardedRef.ts index 3bc18495b153..87b26bfbab40 100644 --- a/src/types/utils/viewForwardedRef.ts +++ b/src/types/utils/viewForwardedRef.ts @@ -1,5 +1,5 @@ -import {ForwardedRef} from 'react'; -import {View} from 'react-native'; +import type {ForwardedRef} from 'react'; +import type {View} from 'react-native'; const viewForwardedRef = (ref: ForwardedRef) => ref as ForwardedRef; diff --git a/src/types/utils/viewRef.ts b/src/types/utils/viewRef.ts index 015d88cc5a8b..1fd9d186ba1f 100644 --- a/src/types/utils/viewRef.ts +++ b/src/types/utils/viewRef.ts @@ -1,4 +1,4 @@ -import {View} from 'react-native'; +import type {View} from 'react-native'; const viewRef = (ref: React.RefObject) => ref as React.RefObject; diff --git a/tests/perf-test/ModifiedExpenseMessage.perf-test.ts b/tests/perf-test/ModifiedExpenseMessage.perf-test.ts index 1997d55d8a05..5aa842155cb5 100644 --- a/tests/perf-test/ModifiedExpenseMessage.perf-test.ts +++ b/tests/perf-test/ModifiedExpenseMessage.perf-test.ts @@ -3,7 +3,7 @@ import Onyx from 'react-native-onyx'; import {measureFunction} from 'reassure'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {Policy, Report} from '@src/types/onyx'; +import type {Policy, Report} from '@src/types/onyx'; import ModifiedExpenseMessage from '../../src/libs/ModifiedExpenseMessage'; import createCollection from '../utils/collections/createCollection'; import createRandomPolicy from '../utils/collections/policies'; diff --git a/tests/perf-test/ReportActionsUtils.perf-test.ts b/tests/perf-test/ReportActionsUtils.perf-test.ts index d4a1b9b58e44..ea3b48bacf47 100644 --- a/tests/perf-test/ReportActionsUtils.perf-test.ts +++ b/tests/perf-test/ReportActionsUtils.perf-test.ts @@ -3,7 +3,8 @@ import {measureFunction} from 'reassure'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import ReportAction, {ReportActions} from '@src/types/onyx/ReportAction'; +import type {ReportActions} from '@src/types/onyx/ReportAction'; +import type ReportAction from '@src/types/onyx/ReportAction'; import createCollection from '../utils/collections/createCollection'; import createRandomReportAction from '../utils/collections/reportActions'; import waitForBatchedUpdates from '../utils/waitForBatchedUpdates'; diff --git a/tests/perf-test/ReportUtils.perf-test.ts b/tests/perf-test/ReportUtils.perf-test.ts index 928d9a9fbdff..62b911fb0417 100644 --- a/tests/perf-test/ReportUtils.perf-test.ts +++ b/tests/perf-test/ReportUtils.perf-test.ts @@ -3,7 +3,7 @@ import {measureFunction} from 'reassure'; import * as ReportUtils from '@libs/ReportUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PersonalDetails, Policy, Report, ReportAction} from '@src/types/onyx'; +import type {PersonalDetails, Policy, Report, ReportAction} from '@src/types/onyx'; import createCollection from '../utils/collections/createCollection'; import createPersonalDetails from '../utils/collections/personalDetails'; import createRandomPolicy from '../utils/collections/policies'; diff --git a/tests/perf-test/SidebarUtils.perf-test.ts b/tests/perf-test/SidebarUtils.perf-test.ts index 05143848f8b9..5606863f42e2 100644 --- a/tests/perf-test/SidebarUtils.perf-test.ts +++ b/tests/perf-test/SidebarUtils.perf-test.ts @@ -1,12 +1,13 @@ -import Onyx, {OnyxCollection} from 'react-native-onyx'; +import type {OnyxCollection} from 'react-native-onyx'; +import Onyx from 'react-native-onyx'; import {measureFunction} from 'reassure'; import SidebarUtils from '@libs/SidebarUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import {PersonalDetails} from '@src/types/onyx'; -import Policy from '@src/types/onyx/Policy'; -import Report from '@src/types/onyx/Report'; -import ReportAction from '@src/types/onyx/ReportAction'; +import type {PersonalDetails} from '@src/types/onyx'; +import type Policy from '@src/types/onyx/Policy'; +import type Report from '@src/types/onyx/Report'; +import type ReportAction from '@src/types/onyx/ReportAction'; import createCollection from '../utils/collections/createCollection'; import createPersonalDetails from '../utils/collections/personalDetails'; import createRandomPolicy from '../utils/collections/policies'; diff --git a/tests/unit/PersistedRequests.ts b/tests/unit/PersistedRequests.ts index 79153efdc806..b1d05c96f12a 100644 --- a/tests/unit/PersistedRequests.ts +++ b/tests/unit/PersistedRequests.ts @@ -1,5 +1,5 @@ import * as PersistedRequests from '../../src/libs/actions/PersistedRequests'; -import Request from '../../src/types/onyx/Request'; +import type Request from '../../src/types/onyx/Request'; const request: Request = { command: 'OpenReport', diff --git a/tests/utils/collections/reportActions.ts b/tests/utils/collections/reportActions.ts index abc83eb82abe..747cbe5b6a1a 100644 --- a/tests/utils/collections/reportActions.ts +++ b/tests/utils/collections/reportActions.ts @@ -1,6 +1,6 @@ import {rand, randAggregation, randBoolean, randPastDate, randWord} from '@ngneat/falso'; import CONST from '@src/CONST'; -import {ReportAction} from '@src/types/onyx'; +import type {ReportAction} from '@src/types/onyx'; type ActionType = keyof typeof CONST.REPORT.ACTIONS.TYPE; diff --git a/tests/utils/collections/transaction.ts b/tests/utils/collections/transaction.ts index 5f7cd47de990..25b4a77c66dd 100644 --- a/tests/utils/collections/transaction.ts +++ b/tests/utils/collections/transaction.ts @@ -1,6 +1,6 @@ import {rand, randAmount, randBoolean, randPastDate, randWord} from '@ngneat/falso'; import CONST from '@src/CONST'; -import {Transaction} from '@src/types/onyx'; +import type {Transaction} from '@src/types/onyx'; export default function createRandomTransaction(index: number): Transaction { return { From 9985659104742e52c314793c7eb1ed951d5a2663 Mon Sep 17 00:00:00 2001 From: Aldo Canepa Date: Wed, 3 Jan 2024 15:05:56 -0300 Subject: [PATCH 104/130] Style --- src/hooks/useLocationBias.ts | 2 +- src/pages/iou/WaypointEditor.js | 2 +- src/pages/iou/request/step/IOURequestStepWaypoint.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hooks/useLocationBias.ts b/src/hooks/useLocationBias.ts index 3f1adfbae8c5..b95ffbb57e9d 100644 --- a/src/hooks/useLocationBias.ts +++ b/src/hooks/useLocationBias.ts @@ -3,7 +3,7 @@ import {useMemo} from 'react'; /** * Construct the rectangular boundary based on user location and waypoints */ -export default function useLocationBias(allWaypoints: Record, userLocation?: {latitude: number, longitude: number}) { +export default function useLocationBias(allWaypoints: Record, userLocation?: {latitude: number; longitude: number}) { return useMemo(() => { const hasFilledWaypointCount = Object.values(allWaypoints).some((waypoint) => Object.keys(waypoint).length > 0); // If there are no filled wayPoints and if user's current location cannot be retrieved, diff --git a/src/pages/iou/WaypointEditor.js b/src/pages/iou/WaypointEditor.js index 41629119c4c3..ab8874091152 100644 --- a/src/pages/iou/WaypointEditor.js +++ b/src/pages/iou/WaypointEditor.js @@ -14,8 +14,8 @@ import * as Expensicons from '@components/Icon/Expensicons'; import ScreenWrapper from '@components/ScreenWrapper'; import transactionPropTypes from '@components/transactionPropTypes'; import useLocalize from '@hooks/useLocalize'; -import useNetwork from '@hooks/useNetwork'; import useLocationBias from '@hooks/useLocationBias'; +import useNetwork from '@hooks/useNetwork'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import * as ErrorUtils from '@libs/ErrorUtils'; diff --git a/src/pages/iou/request/step/IOURequestStepWaypoint.js b/src/pages/iou/request/step/IOURequestStepWaypoint.js index 0ecba1cb004f..09617026576d 100644 --- a/src/pages/iou/request/step/IOURequestStepWaypoint.js +++ b/src/pages/iou/request/step/IOURequestStepWaypoint.js @@ -15,8 +15,8 @@ import * as Expensicons from '@components/Icon/Expensicons'; import ScreenWrapper from '@components/ScreenWrapper'; import transactionPropTypes from '@components/transactionPropTypes'; import useLocalize from '@hooks/useLocalize'; -import useNetwork from '@hooks/useNetwork'; import useLocationBias from '@hooks/useLocationBias'; +import useNetwork from '@hooks/useNetwork'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import compose from '@libs/compose'; From 19eb21008ae0785d6130d26a78cf4e91e520384b Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 19:06:08 +0100 Subject: [PATCH 105/130] fix: more errors --- .../GenericPressable/BaseGenericPressable.tsx | 6 +++--- src/hooks/useSafeAreaInsets/index.android.ts | 4 ++-- src/libs/CardUtils.ts | 7 +++---- src/libs/PersonalDetailsUtils.ts | 15 +++++++-------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx b/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx index e9de3aaee228..f41a6b389001 100644 --- a/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx +++ b/src/components/Pressable/GenericPressable/BaseGenericPressable.tsx @@ -1,8 +1,8 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef, useCallback, useEffect, useMemo} from 'react'; -// eslint-disable-next-line no-restricted-imports +import React, {forwardRef, useCallback, useEffect, useMemo} from 'react'; import type {GestureResponderEvent, View} from 'react-native'; -import { Pressable} from 'react-native'; +// eslint-disable-next-line no-restricted-imports +import {Pressable} from 'react-native'; import useSingleExecution from '@hooks/useSingleExecution'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/hooks/useSafeAreaInsets/index.android.ts b/src/hooks/useSafeAreaInsets/index.android.ts index 6c6af7cc442b..66500dd37887 100644 --- a/src/hooks/useSafeAreaInsets/index.android.ts +++ b/src/hooks/useSafeAreaInsets/index.android.ts @@ -1,6 +1,6 @@ -// eslint-disable-next-line no-restricted-imports import type {EdgeInsets} from 'react-native-safe-area-context'; -import { useSafeAreaInsets as useSafeAreaInsetsInternal} from 'react-native-safe-area-context'; +// eslint-disable-next-line no-restricted-imports +import {useSafeAreaInsets as useSafeAreaInsetsInternal} from 'react-native-safe-area-context'; import StatusBar from '@libs/StatusBar'; function useSafeAreaInsets(): EdgeInsets { diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts index 91f860beb761..d71ad9c2629a 100644 --- a/src/libs/CardUtils.ts +++ b/src/libs/CardUtils.ts @@ -3,7 +3,6 @@ import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; import type {OnyxValues} from '@src/ONYXKEYS'; import ONYXKEYS from '@src/ONYXKEYS'; -import type * as OnyxTypes from '@src/types/onyx'; import type {Card} from '@src/types/onyx'; import * as Localize from './Localize'; @@ -73,10 +72,10 @@ function getYearFromExpirationDateString(expirationDateString: string) { * @param cardList - collection of assigned cards * @returns collection of assigned cards grouped by domain */ -function getDomainCards(cardList: Record) { +function getDomainCards(cardList: Record) { // Check for domainName to filter out personal credit cards. // eslint-disable-next-line you-dont-need-lodash-underscore/filter - const activeCards = lodash.filter(cardList, (card) => !!card.domainName && (CONST.EXPENSIFY_CARD.ACTIVE_STATES as ReadonlyArray).includes(card.state)); + const activeCards = lodash.filter(cardList, (card) => !!card.domainName && (CONST.EXPENSIFY_CARD.ACTIVE_STATES as ReadonlyArray).includes(card.state)); return lodash.groupBy(activeCards, (card) => card.domainName); } @@ -113,7 +112,7 @@ function findPhysicalCard(cards: Card[]) { * * @param cardList - collection of assigned cards */ -function hasDetectedFraud(cardList: Record): boolean { +function hasDetectedFraud(cardList: Record): boolean { return Object.values(cardList).some((card) => card.fraud !== CONST.EXPENSIFY_CARD.FRAUD_TYPES.NONE); } diff --git a/src/libs/PersonalDetailsUtils.ts b/src/libs/PersonalDetailsUtils.ts index 2e8705a54ad8..3346094adeec 100644 --- a/src/libs/PersonalDetailsUtils.ts +++ b/src/libs/PersonalDetailsUtils.ts @@ -2,13 +2,12 @@ import type {OnyxEntry} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type * as OnyxTypes from '@src/types/onyx'; -import type {PersonalDetails, PersonalDetailsList} from '@src/types/onyx'; +import type {PersonalDetails, PersonalDetailsList, PrivatePersonalDetails} from '@src/types/onyx'; import * as LocalePhoneNumber from './LocalePhoneNumber'; import * as Localize from './Localize'; import * as UserUtils from './UserUtils'; -let personalDetails: Array = []; +let personalDetails: Array = []; let allPersonalDetails: OnyxEntry = {}; Onyx.connect({ key: ONYXKEYS.PERSONAL_DETAILS_LIST, @@ -31,11 +30,11 @@ function getDisplayNameOrDefault(passedPersonalDetails?: Partial !!allPersonalDetails?.[accountID]) .map((accountID) => { - const detail = (allPersonalDetails?.[accountID] ?? {}) as OnyxTypes.PersonalDetails; + const detail = (allPersonalDetails?.[accountID] ?? {}) as PersonalDetails; if (shouldChangeUserDisplayName && currentUserAccountID === detail.accountID) { return { @@ -77,7 +76,7 @@ function getAccountIDsByLogins(logins: string[]): number[] { */ function getLoginsByAccountIDs(accountIDs: number[]): string[] { return accountIDs.reduce((foundLogins: string[], accountID) => { - const currentDetail: Partial = personalDetails.find((detail) => Number(detail?.accountID) === Number(accountID)) ?? {}; + const currentDetail: Partial = personalDetails.find((detail) => Number(detail?.accountID) === Number(accountID)) ?? {}; if (currentDetail.login) { foundLogins.push(currentDetail.login); } @@ -177,7 +176,7 @@ function getStreetLines(street = '') { * @param privatePersonalDetails - details object * @returns - formatted address */ -function getFormattedAddress(privatePersonalDetails: OnyxTypes.PrivatePersonalDetails): string { +function getFormattedAddress(privatePersonalDetails: PrivatePersonalDetails): string { const {address} = privatePersonalDetails; const [street1, street2] = getStreetLines(address?.street); const formattedAddress = From 8ce2f6140c88ee22d8ab4fc67f0023011d41f289 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 3 Jan 2024 13:06:26 -0500 Subject: [PATCH 106/130] feat(Violations): unwrap comment --- src/CONST.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 4041a3a19631..15b89a8e9940 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -3048,8 +3048,7 @@ const CONST = { }, /** - * Constants for maxToRenderPerBatch parameter that is used for FlatList or SectionList. This controls the amount - * of items rendered per batch, which is the next chunk of items rendered on every scroll. + * Constants for maxToRenderPerBatch parameter that is used for FlatList or SectionList. This controls the amount of items rendered per batch, which is the next chunk of items rendered on every scroll. */ MAX_TO_RENDER_PER_BATCH: { DEFAULT: 5, From 8aec07c55df3f0fefc6bed76c991183cf6b97f7a Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 19:06:43 +0100 Subject: [PATCH 107/130] fix: prettier --- .../AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx | 2 +- src/components/ArchivedReportFooter.tsx | 2 +- .../AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx | 2 +- src/components/Avatar.tsx | 2 +- src/components/AvatarWithDisplayName.tsx | 2 +- src/components/Badge.tsx | 2 +- src/components/Banner.tsx | 2 +- src/components/BaseMiniContextMenuItem.tsx | 2 +- src/components/BlockingViews/BlockingView.tsx | 2 +- src/components/Breadcrumbs.tsx | 2 +- src/components/Button/index.tsx | 4 ++-- src/components/CardPreview.tsx | 2 +- src/components/Checkbox.tsx | 4 ++-- src/components/CheckboxWithLabel.tsx | 4 ++-- src/components/Composer/index.android.tsx | 4 ++-- src/components/Composer/index.ios.tsx | 4 ++-- src/components/Composer/index.tsx | 4 ++-- src/components/ConfirmContent.tsx | 2 +- src/components/CurrentWalletBalance.tsx | 2 +- .../DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx | 2 +- src/components/DisplayNames/DisplayNamesTooltipItem.tsx | 2 +- src/components/DisplayNames/DisplayNamesWithTooltip.tsx | 2 +- src/components/DotIndicatorMessage.tsx | 2 +- src/components/DraggableList/index.tsx | 2 +- src/components/EmojiSuggestions.tsx | 2 +- src/components/ExpensifyWordmark.tsx | 2 +- src/components/FixedFooter.tsx | 2 +- src/components/FlatList/index.android.tsx | 4 ++-- src/components/FormAlertWithSubmitButton.tsx | 2 +- src/components/FormAlertWrapper.tsx | 2 +- src/components/FormElement.tsx | 4 ++-- src/components/FormHelpMessage.tsx | 2 +- src/components/FormScrollView.tsx | 2 +- src/components/FormSubmit/index.tsx | 2 +- src/components/FullscreenLoadingIndicator.tsx | 2 +- src/components/Header.tsx | 2 +- src/components/Hoverable/index.tsx | 2 +- src/components/IFrame.tsx | 2 +- src/components/Icon/BankIcons/index.native.ts | 2 +- src/components/Icon/BankIcons/index.ts | 2 +- src/components/Icon/index.tsx | 2 +- src/components/ImageWithSizeCalculation.tsx | 2 +- src/components/Indicator.tsx | 2 +- src/components/InlineCodeBlock/WrappedText.tsx | 2 +- src/components/InvertedFlatList/BaseInvertedFlatList.tsx | 2 +- src/components/InvertedFlatList/CellRendererComponent.tsx | 2 +- src/components/InvertedFlatList/index.native.tsx | 2 +- src/components/InvertedFlatList/index.tsx | 4 ++-- src/components/LocaleContextProvider.tsx | 2 +- src/components/LocalePicker.tsx | 2 +- src/components/Lottie/index.tsx | 2 +- src/components/MapView/MapView.tsx | 2 +- src/components/MapView/MapView.website.tsx | 2 +- src/components/MenuItem.tsx | 4 ++-- src/components/MenuItemWithTopDescription.tsx | 2 +- src/components/MessagesRow.tsx | 2 +- src/components/MultipleAvatars.tsx | 2 +- src/components/OfflineIndicator.tsx | 2 +- src/components/OfflineWithFeedback.tsx | 2 +- src/components/OpacityView.tsx | 2 +- src/components/OptionRow.tsx | 2 +- src/components/Picker/BasePicker.tsx | 4 ++-- src/components/Picker/index.native.tsx | 2 +- src/components/Picker/index.tsx | 2 +- src/components/PlaidLink/index.native.tsx | 2 +- src/components/PlaidLink/index.tsx | 2 +- src/components/PopoverMenu.tsx | 2 +- src/components/PopoverWithMeasuredContent.tsx | 2 +- src/components/PopoverWithoutOverlay/index.tsx | 2 +- .../PressableWithSecondaryInteraction/index.native.tsx | 2 +- src/components/RNTextInput.tsx | 2 +- src/components/RadioButtonWithLabel.tsx | 2 +- src/components/ReportActionItem/MoneyReportView.tsx | 2 +- src/components/ReportWelcomeText.tsx | 2 +- src/components/ScrollViewWithContext.tsx | 4 ++-- src/components/Search.tsx | 2 +- src/components/SelectCircle.tsx | 2 +- src/components/SingleChoiceQuestion.tsx | 2 +- src/components/SplashScreenHider/index.native.tsx | 2 +- src/components/TaskHeaderActionButton.tsx | 2 +- src/components/TestToolMenu.tsx | 2 +- src/components/TestToolsModal.tsx | 2 +- src/components/Text.tsx | 2 +- src/components/TextInput/BaseTextInput/index.native.tsx | 2 +- src/components/TextInput/BaseTextInput/index.tsx | 2 +- src/components/TextInput/TextInputLabel/index.tsx | 2 +- src/components/TextLink.tsx | 2 +- src/components/TextWithEllipsis/index.tsx | 2 +- src/components/ThumbnailImage.tsx | 2 +- src/components/Tooltip/BaseTooltip/index.tsx | 2 +- src/components/ValidateCode/ValidateCodeModal.tsx | 2 +- src/components/WalletStatementModal/index.native.tsx | 2 +- src/components/createOnyxContext.tsx | 2 +- src/components/withCurrentReportID.tsx | 2 +- src/components/withCurrentUserPersonalDetails.tsx | 4 ++-- src/components/withEnvironment.tsx | 2 +- src/components/withKeyboardState.tsx | 2 +- src/components/withLocalize.tsx | 4 ++-- src/components/withNavigation.tsx | 2 +- src/components/withNavigationFallback.tsx | 2 +- src/components/withStyleUtils.tsx | 2 +- src/components/withTheme.tsx | 2 +- src/components/withThemeStyles.tsx | 2 +- src/components/withViewportOffsetTop.tsx | 2 +- src/components/withWindowDimensions/index.native.tsx | 2 +- src/components/withWindowDimensions/index.tsx | 2 +- src/hooks/useAutoFocusInput.ts | 2 +- src/hooks/useCurrentReportID.tsx | 2 +- src/hooks/useDelayedInputFocus.ts | 2 +- src/hooks/useInitialWindowDimensions/index.ts | 2 +- src/hooks/useKeyboardState.ts | 2 +- src/hooks/useLocalize.ts | 2 +- src/hooks/useResponsiveLayout.ts | 2 +- src/hooks/useScrollContext.ts | 2 +- src/libs/Accessibility/index.ts | 2 +- src/libs/AppStateMonitor/index.ts | 2 +- src/libs/Navigation/AppNavigator/AuthScreens.tsx | 2 +- .../Navigation/AppNavigator/ModalNavigatorScreenOptions.ts | 2 +- src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx | 2 +- .../AppNavigator/Navigators/LeftModalNavigator.tsx | 2 +- .../AppNavigator/Navigators/RightModalNavigator.tsx | 2 +- src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts | 2 +- .../AppNavigator/createCustomStackNavigator/CustomRouter.ts | 2 +- .../createCustomStackNavigator/index.native.tsx | 4 ++-- .../AppNavigator/createCustomStackNavigator/index.tsx | 4 ++-- src/libs/Navigation/Navigation.ts | 2 +- src/libs/Navigation/NavigationRoot.tsx | 2 +- src/libs/Navigation/OnyxTabNavigator.tsx | 2 +- src/libs/Navigation/dismissModal.ts | 2 +- src/libs/Navigation/getStateFromPath.ts | 2 +- src/libs/Notification/PushNotification/index.native.ts | 2 +- src/libs/PolicyUtils.ts | 2 +- src/libs/ReportActionsUtils.ts | 2 +- src/libs/ReportUtils.ts | 2 +- src/libs/SelectionScraper/index.ts | 2 +- src/libs/actions/App.ts | 2 +- src/libs/actions/MapboxToken.ts | 2 +- src/libs/actions/Report.ts | 2 +- src/libs/getCurrentPosition/index.android.ts | 2 +- src/libs/getCurrentPosition/index.ts | 2 +- .../setShouldShowComposeInputKeyboardAwareBuilder.ts | 2 +- src/pages/UnlinkLoginPage.tsx | 2 +- src/pages/home/ReportScreenContext.ts | 2 +- src/pages/home/report/ReportActionItemGrouped.tsx | 2 +- src/pages/home/report/ReportActionItemMessage.tsx | 2 +- src/pages/home/report/ReportActionItemSingle.tsx | 2 +- .../home/report/withReportAndReportActionOrNotFound.tsx | 4 ++-- src/pages/home/report/withReportOrNotFound.tsx | 2 +- src/pages/workspace/withPolicy.tsx | 6 +++--- src/pages/workspace/withPolicyAndFullscreenLoading.tsx | 6 +++--- src/styles/index.ts | 2 +- src/styles/utils/generators/TooltipStyleUtils.ts | 2 +- src/styles/utils/index.ts | 4 ++-- 153 files changed, 175 insertions(+), 175 deletions(-) diff --git a/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx b/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx index 48774699fcb5..bb3792f59d9f 100644 --- a/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx +++ b/src/components/AnchorForCommentsOnly/BaseAnchorForCommentsOnly.tsx @@ -1,7 +1,7 @@ import Str from 'expensify-common/lib/str'; import React, {useEffect, useRef} from 'react'; import type {Text as RNText} from 'react-native'; -import { StyleSheet} from 'react-native'; +import {StyleSheet} from 'react-native'; import PressableWithSecondaryInteraction from '@components/PressableWithSecondaryInteraction'; import Text from '@components/Text'; import Tooltip from '@components/Tooltip'; diff --git a/src/components/ArchivedReportFooter.tsx b/src/components/ArchivedReportFooter.tsx index 98736f39b96a..083c8340baa6 100644 --- a/src/components/ArchivedReportFooter.tsx +++ b/src/components/ArchivedReportFooter.tsx @@ -1,7 +1,7 @@ import lodashEscape from 'lodash/escape'; import React from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils'; diff --git a/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx b/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx index 8ea3b3ac6c9e..fc3bf4659bd7 100644 --- a/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx +++ b/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.tsx @@ -1,6 +1,6 @@ import {FlashList} from '@shopify/flash-list'; import type {ForwardedRef, ReactElement} from 'react'; -import React, { forwardRef, useCallback, useEffect, useMemo, useRef} from 'react'; +import React, {forwardRef, useCallback, useEffect, useMemo, useRef} from 'react'; import type {View} from 'react-native'; // We take ScrollView from this package to properly handle the scrolling of AutoCompleteSuggestions in chats since one scroll is nested inside another import {ScrollView} from 'react-native-gesture-handler'; diff --git a/src/components/Avatar.tsx b/src/components/Avatar.tsx index 5f25229a9a97..4da91c2e7d19 100644 --- a/src/components/Avatar.tsx +++ b/src/components/Avatar.tsx @@ -1,6 +1,6 @@ import React, {useEffect, useState} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useNetwork from '@hooks/useNetwork'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/AvatarWithDisplayName.tsx b/src/components/AvatarWithDisplayName.tsx index 024ca0243d12..4580f3b7e4d4 100644 --- a/src/components/AvatarWithDisplayName.tsx +++ b/src/components/AvatarWithDisplayName.tsx @@ -1,7 +1,7 @@ import React, {useCallback, useEffect, useRef} from 'react'; import {View} from 'react-native'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/Badge.tsx b/src/components/Badge.tsx index f49068f601fd..5be33e6ff2ec 100644 --- a/src/components/Badge.tsx +++ b/src/components/Badge.tsx @@ -1,6 +1,6 @@ import React, {useCallback} from 'react'; import type {GestureResponderEvent, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; diff --git a/src/components/Banner.tsx b/src/components/Banner.tsx index acb6d377bfa9..56fe7c4d0b42 100644 --- a/src/components/Banner.tsx +++ b/src/components/Banner.tsx @@ -1,6 +1,6 @@ import React, {memo} from 'react'; import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/BaseMiniContextMenuItem.tsx b/src/components/BaseMiniContextMenuItem.tsx index 44a259e50e4d..1f9a14cdfdee 100644 --- a/src/components/BaseMiniContextMenuItem.tsx +++ b/src/components/BaseMiniContextMenuItem.tsx @@ -1,7 +1,7 @@ import type {ForwardedRef} from 'react'; import React from 'react'; import type {PressableStateCallbackType} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import DomUtils from '@libs/DomUtils'; diff --git a/src/components/BlockingViews/BlockingView.tsx b/src/components/BlockingViews/BlockingView.tsx index e343e9b54ee4..edec30604b88 100644 --- a/src/components/BlockingViews/BlockingView.tsx +++ b/src/components/BlockingViews/BlockingView.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {ImageSourcePropType} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import type {SvgProps} from 'react-native-svg'; import AutoEmailLink from '@components/AutoEmailLink'; import Icon from '@components/Icon'; diff --git a/src/components/Breadcrumbs.tsx b/src/components/Breadcrumbs.tsx index fe623f773f99..6af3a4c6d477 100644 --- a/src/components/Breadcrumbs.tsx +++ b/src/components/Breadcrumbs.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import LogoComponent from '@assets/images/expensify-wordmark.svg'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx index 993fdc579f0c..dd0499d4d243 100644 --- a/src/components/Button/index.tsx +++ b/src/components/Button/index.tsx @@ -1,7 +1,7 @@ import {useIsFocused} from '@react-navigation/native'; import type {ForwardedRef} from 'react'; -import React, { useCallback} from 'react'; -import type { GestureResponderEvent, StyleProp, TextStyle, ViewStyle} from 'react-native'; +import React, {useCallback} from 'react'; +import type {GestureResponderEvent, StyleProp, TextStyle, ViewStyle} from 'react-native'; import {ActivityIndicator, View} from 'react-native'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; diff --git a/src/components/CardPreview.tsx b/src/components/CardPreview.tsx index 827e2f99dd5a..3ac56d6b26a8 100644 --- a/src/components/CardPreview.tsx +++ b/src/components/CardPreview.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import ExpensifyCardImage from '@assets/images/expensify-card.svg'; import usePrivatePersonalDetails from '@hooks/usePrivatePersonalDetails'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Checkbox.tsx b/src/components/Checkbox.tsx index 82038125f229..7e7720b57a6e 100644 --- a/src/components/Checkbox.tsx +++ b/src/components/Checkbox.tsx @@ -1,7 +1,7 @@ -import React, { forwardRef } from 'react'; +import React, {forwardRef} from 'react'; import type {ForwardedRef, MouseEventHandler, KeyboardEvent as ReactKeyboardEvent} from 'react'; import type {GestureResponderEvent, StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/CheckboxWithLabel.tsx b/src/components/CheckboxWithLabel.tsx index 5eb46939395d..a25ccf184f52 100644 --- a/src/components/CheckboxWithLabel.tsx +++ b/src/components/CheckboxWithLabel.tsx @@ -1,7 +1,7 @@ import type {ComponentType, ForwardedRef} from 'react'; -import React, { useState} from 'react'; +import React, {useState} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; import Checkbox from './Checkbox'; diff --git a/src/components/Composer/index.android.tsx b/src/components/Composer/index.android.tsx index f00f8b4aac24..d60a41e0f263 100644 --- a/src/components/Composer/index.android.tsx +++ b/src/components/Composer/index.android.tsx @@ -1,6 +1,6 @@ import type {ForwardedRef} from 'react'; -import React, { useCallback, useEffect, useMemo, useRef} from 'react'; -import type { TextInput} from 'react-native'; +import React, {useCallback, useEffect, useMemo, useRef} from 'react'; +import type {TextInput} from 'react-native'; import {StyleSheet} from 'react-native'; import RNTextInput from '@components/RNTextInput'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/Composer/index.ios.tsx b/src/components/Composer/index.ios.tsx index c25212b74460..b1357fef9a46 100644 --- a/src/components/Composer/index.ios.tsx +++ b/src/components/Composer/index.ios.tsx @@ -1,6 +1,6 @@ import type {ForwardedRef} from 'react'; -import React, { useCallback, useEffect, useMemo, useRef} from 'react'; -import type { TextInput} from 'react-native'; +import React, {useCallback, useEffect, useMemo, useRef} from 'react'; +import type {TextInput} from 'react-native'; import {StyleSheet} from 'react-native'; import RNTextInput from '@components/RNTextInput'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/Composer/index.tsx b/src/components/Composer/index.tsx index 8f7f55b0a68d..19b7bb6bb30a 100755 --- a/src/components/Composer/index.tsx +++ b/src/components/Composer/index.tsx @@ -1,10 +1,10 @@ import {useNavigation} from '@react-navigation/native'; import ExpensiMark from 'expensify-common/lib/ExpensiMark'; import type {BaseSyntheticEvent, ForwardedRef} from 'react'; -import React, { useCallback, useEffect, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {flushSync} from 'react-dom'; import type {DimensionValue, NativeSyntheticEvent, Text as RNText, TextInput, TextInputKeyPressEventData, TextInputProps, TextInputSelectionChangeEventData} from 'react-native'; -import { StyleSheet, View} from 'react-native'; +import {StyleSheet, View} from 'react-native'; import type {AnimatedProps} from 'react-native-reanimated'; import RNTextInput from '@components/RNTextInput'; import Text from '@components/Text'; diff --git a/src/components/ConfirmContent.tsx b/src/components/ConfirmContent.tsx index 4e907065c9c0..94146a2c2957 100644 --- a/src/components/ConfirmContent.tsx +++ b/src/components/ConfirmContent.tsx @@ -1,7 +1,7 @@ import type {ReactNode} from 'react'; import React from 'react'; import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/CurrentWalletBalance.tsx b/src/components/CurrentWalletBalance.tsx index 6808ebbcbc1a..8761b50465f3 100644 --- a/src/components/CurrentWalletBalance.tsx +++ b/src/components/CurrentWalletBalance.tsx @@ -1,7 +1,7 @@ import React from 'react'; import type {StyleProp, TextStyle} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import ONYXKEYS from '@src/ONYXKEYS'; diff --git a/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx b/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx index edc55aeafef6..27d8027bbcff 100644 --- a/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx +++ b/src/components/DeeplinkWrapper/DeeplinkRedirectLoadingIndicator.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import * as Illustrations from '@components/Icon/Illustrations'; diff --git a/src/components/DisplayNames/DisplayNamesTooltipItem.tsx b/src/components/DisplayNames/DisplayNamesTooltipItem.tsx index db6023b0215e..5d2bc2decd7a 100644 --- a/src/components/DisplayNames/DisplayNamesTooltipItem.tsx +++ b/src/components/DisplayNames/DisplayNamesTooltipItem.tsx @@ -1,5 +1,5 @@ import type {RefObject} from 'react'; -import React, { useCallback} from 'react'; +import React, {useCallback} from 'react'; import type {Text as RNText, StyleProp, TextStyle} from 'react-native'; import Text from '@components/Text'; import UserDetailsTooltip from '@components/UserDetailsTooltip'; diff --git a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx index 62da9a97a724..6a8953347b9c 100644 --- a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx +++ b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx @@ -1,6 +1,6 @@ import React, {Fragment, useCallback, useRef} from 'react'; import type {Text as RNText} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import Text from '@components/Text'; import Tooltip from '@components/Tooltip'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/DotIndicatorMessage.tsx b/src/components/DotIndicatorMessage.tsx index 11bc6d53b8fa..d18704fdfb05 100644 --- a/src/components/DotIndicatorMessage.tsx +++ b/src/components/DotIndicatorMessage.tsx @@ -1,7 +1,7 @@ /* eslint-disable react/no-array-index-key */ import React from 'react'; import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/DraggableList/index.tsx b/src/components/DraggableList/index.tsx index 69a46ba47d5f..dc78a3ce6222 100644 --- a/src/components/DraggableList/index.tsx +++ b/src/components/DraggableList/index.tsx @@ -1,5 +1,5 @@ import React, {useCallback} from 'react'; -import {DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'; +import {DragDropContext, Draggable, Droppable} from 'react-beautiful-dnd'; import type {OnDragEndResponder} from 'react-beautiful-dnd'; import {ScrollView} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/EmojiSuggestions.tsx b/src/components/EmojiSuggestions.tsx index 3a71abce01c9..5904b1521f98 100644 --- a/src/components/EmojiSuggestions.tsx +++ b/src/components/EmojiSuggestions.tsx @@ -1,5 +1,5 @@ import type {ReactElement} from 'react'; -import React, { useCallback} from 'react'; +import React, {useCallback} from 'react'; import {View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/ExpensifyWordmark.tsx b/src/components/ExpensifyWordmark.tsx index 3ef5f283b200..0e8f78686b07 100644 --- a/src/components/ExpensifyWordmark.tsx +++ b/src/components/ExpensifyWordmark.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import AdHocLogo from '@assets/images/expensify-logo--adhoc.svg'; import DevLogo from '@assets/images/expensify-logo--dev.svg'; import StagingLogo from '@assets/images/expensify-logo--staging.svg'; diff --git a/src/components/FixedFooter.tsx b/src/components/FixedFooter.tsx index 484113b0ca7d..35fa4d02f5e0 100644 --- a/src/components/FixedFooter.tsx +++ b/src/components/FixedFooter.tsx @@ -1,7 +1,7 @@ import type {ReactNode} from 'react'; import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; type FixedFooterProps = { diff --git a/src/components/FlatList/index.android.tsx b/src/components/FlatList/index.android.tsx index 3940e23c3667..863930203863 100644 --- a/src/components/FlatList/index.android.tsx +++ b/src/components/FlatList/index.android.tsx @@ -1,7 +1,7 @@ import {useFocusEffect} from '@react-navigation/native'; import type {ForwardedRef} from 'react'; -import React, { forwardRef, useCallback, useContext} from 'react'; -import type { FlatListProps} from 'react-native'; +import React, {forwardRef, useCallback, useContext} from 'react'; +import type {FlatListProps} from 'react-native'; import {FlatList} from 'react-native'; import {ActionListContext} from '@pages/home/ReportScreenContext'; diff --git a/src/components/FormAlertWithSubmitButton.tsx b/src/components/FormAlertWithSubmitButton.tsx index 56c1cd05cade..512d2063dc0f 100644 --- a/src/components/FormAlertWithSubmitButton.tsx +++ b/src/components/FormAlertWithSubmitButton.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import Button from './Button'; import FormAlertWrapper from './FormAlertWrapper'; diff --git a/src/components/FormAlertWrapper.tsx b/src/components/FormAlertWrapper.tsx index 2811cdab65fa..65fa2311620d 100644 --- a/src/components/FormAlertWrapper.tsx +++ b/src/components/FormAlertWrapper.tsx @@ -1,7 +1,7 @@ import type {ReactNode} from 'react'; import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import type Network from '@src/types/onyx/Network'; diff --git a/src/components/FormElement.tsx b/src/components/FormElement.tsx index dc7792c5e443..da98d4dc565a 100644 --- a/src/components/FormElement.tsx +++ b/src/components/FormElement.tsx @@ -1,6 +1,6 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; -import type { ViewProps} from 'react-native'; +import React, {forwardRef} from 'react'; +import type {ViewProps} from 'react-native'; import {View} from 'react-native'; import * as ComponentUtils from '@libs/ComponentUtils'; diff --git a/src/components/FormHelpMessage.tsx b/src/components/FormHelpMessage.tsx index 6675f038c105..4f1d784788bf 100644 --- a/src/components/FormHelpMessage.tsx +++ b/src/components/FormHelpMessage.tsx @@ -1,7 +1,7 @@ import isEmpty from 'lodash/isEmpty'; import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as Localize from '@libs/Localize'; diff --git a/src/components/FormScrollView.tsx b/src/components/FormScrollView.tsx index 0b8583ec1071..ade167e9e628 100644 --- a/src/components/FormScrollView.tsx +++ b/src/components/FormScrollView.tsx @@ -1,6 +1,6 @@ import type {ForwardedRef} from 'react'; import React from 'react'; -import type { ScrollViewProps} from 'react-native'; +import type {ScrollViewProps} from 'react-native'; import {ScrollView} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/FormSubmit/index.tsx b/src/components/FormSubmit/index.tsx index 1adbfa288403..2ccd006bf322 100644 --- a/src/components/FormSubmit/index.tsx +++ b/src/components/FormSubmit/index.tsx @@ -1,5 +1,5 @@ import type {KeyboardEvent} from 'react'; -import React, { useEffect} from 'react'; +import React, {useEffect} from 'react'; import {View} from 'react-native'; import * as ComponentUtils from '@libs/ComponentUtils'; import isEnterWhileComposition from '@libs/KeyboardShortcut/isEnterWhileComposition'; diff --git a/src/components/FullscreenLoadingIndicator.tsx b/src/components/FullscreenLoadingIndicator.tsx index 143476a02446..bd3082db5fa4 100644 --- a/src/components/FullscreenLoadingIndicator.tsx +++ b/src/components/FullscreenLoadingIndicator.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import type { StyleProp, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import {ActivityIndicator, StyleSheet, View} from 'react-native'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 01199c0a0559..25532107016f 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,7 +1,7 @@ import type {ReactNode} from 'react'; import React from 'react'; import type {StyleProp, TextStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import EnvironmentBadge from './EnvironmentBadge'; import Text from './Text'; diff --git a/src/components/Hoverable/index.tsx b/src/components/Hoverable/index.tsx index e001f00ea968..9a68ccd74940 100644 --- a/src/components/Hoverable/index.tsx +++ b/src/components/Hoverable/index.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef, MutableRefObject, ReactElement, RefAttributes} from 'react'; -import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; +import React, {forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; import {DeviceEventEmitter} from 'react-native'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; import CONST from '@src/CONST'; diff --git a/src/components/IFrame.tsx b/src/components/IFrame.tsx index b9943811d48d..ab27597aeebd 100644 --- a/src/components/IFrame.tsx +++ b/src/components/IFrame.tsx @@ -1,6 +1,6 @@ import React, {useEffect, useState} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Session} from '@src/types/onyx'; diff --git a/src/components/Icon/BankIcons/index.native.ts b/src/components/Icon/BankIcons/index.native.ts index cc4660f59392..61721512ec04 100644 --- a/src/components/Icon/BankIcons/index.native.ts +++ b/src/components/Icon/BankIcons/index.native.ts @@ -1,7 +1,7 @@ import GenericBank from '@assets/images/bankicons/generic-bank-account.svg'; import GenericBankCard from '@assets/images/cardicons/generic-bank-card.svg'; import type {BankIconParams} from '@components/Icon/BankIconsUtils'; -import { getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; +import {getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; import variables from '@styles/variables'; import CONST from '@src/CONST'; import type {BankIcon} from '@src/types/onyx/Bank'; diff --git a/src/components/Icon/BankIcons/index.ts b/src/components/Icon/BankIcons/index.ts index 379fba482613..378a7107aa03 100644 --- a/src/components/Icon/BankIcons/index.ts +++ b/src/components/Icon/BankIcons/index.ts @@ -1,7 +1,7 @@ import GenericBank from '@assets/images/bankicons/generic-bank-account.svg'; import GenericBankCard from '@assets/images/cardicons/generic-bank-card.svg'; import type {BankIconParams} from '@components/Icon/BankIconsUtils'; -import { getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; +import {getBankIconAsset, getBankNameKey} from '@components/Icon/BankIconsUtils'; import variables from '@styles/variables'; import CONST from '@src/CONST'; import type {BankIcon} from '@src/types/onyx/Bank'; diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx index b4528df660d8..20f3fd4a8acb 100644 --- a/src/components/Icon/index.tsx +++ b/src/components/Icon/index.tsx @@ -1,7 +1,7 @@ import type {ImageContentFit} from 'expo-image'; import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import ImageSVG from '@components/ImageSVG'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/ImageWithSizeCalculation.tsx b/src/components/ImageWithSizeCalculation.tsx index b488fd461f29..b13d863d97e1 100644 --- a/src/components/ImageWithSizeCalculation.tsx +++ b/src/components/ImageWithSizeCalculation.tsx @@ -1,7 +1,7 @@ import delay from 'lodash/delay'; import React, {useEffect, useRef, useState} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import Log from '@libs/Log'; import FullscreenLoadingIndicator from './FullscreenLoadingIndicator'; diff --git a/src/components/Indicator.tsx b/src/components/Indicator.tsx index d736000feb00..5bf93eb8a6b3 100644 --- a/src/components/Indicator.tsx +++ b/src/components/Indicator.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {StyleSheet, View} from 'react-native'; import type {OnyxCollection} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx/lib/types'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/InlineCodeBlock/WrappedText.tsx b/src/components/InlineCodeBlock/WrappedText.tsx index c8ba754853a9..3c196f2a7492 100644 --- a/src/components/InlineCodeBlock/WrappedText.tsx +++ b/src/components/InlineCodeBlock/WrappedText.tsx @@ -1,6 +1,6 @@ import React, {Fragment} from 'react'; import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; diff --git a/src/components/InvertedFlatList/BaseInvertedFlatList.tsx b/src/components/InvertedFlatList/BaseInvertedFlatList.tsx index f89daa8a7710..9e3991828625 100644 --- a/src/components/InvertedFlatList/BaseInvertedFlatList.tsx +++ b/src/components/InvertedFlatList/BaseInvertedFlatList.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {FlatListProps} from 'react-native'; import FlatList from '@components/FlatList'; diff --git a/src/components/InvertedFlatList/CellRendererComponent.tsx b/src/components/InvertedFlatList/CellRendererComponent.tsx index f7455b0ef9c2..b95fbf42cbb4 100644 --- a/src/components/InvertedFlatList/CellRendererComponent.tsx +++ b/src/components/InvertedFlatList/CellRendererComponent.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewProps} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; type CellRendererComponentProps = ViewProps & { index: number; diff --git a/src/components/InvertedFlatList/index.native.tsx b/src/components/InvertedFlatList/index.native.tsx index dd47e78fe756..76c4b774d0cc 100644 --- a/src/components/InvertedFlatList/index.native.tsx +++ b/src/components/InvertedFlatList/index.native.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {FlatList, FlatListProps} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import BaseInvertedFlatList from './BaseInvertedFlatList'; diff --git a/src/components/InvertedFlatList/index.tsx b/src/components/InvertedFlatList/index.tsx index fc141d2af906..0fc35957e687 100644 --- a/src/components/InvertedFlatList/index.tsx +++ b/src/components/InvertedFlatList/index.tsx @@ -1,6 +1,6 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef, useEffect, useRef} from 'react'; -import type { FlatList, FlatListProps, NativeScrollEvent, NativeSyntheticEvent} from 'react-native'; +import React, {forwardRef, useEffect, useRef} from 'react'; +import type {FlatList, FlatListProps, NativeScrollEvent, NativeSyntheticEvent} from 'react-native'; import {DeviceEventEmitter} from 'react-native'; import CONST from '@src/CONST'; import BaseInvertedFlatList from './BaseInvertedFlatList'; diff --git a/src/components/LocaleContextProvider.tsx b/src/components/LocaleContextProvider.tsx index 4cf7551ab249..7313bb4aa7bb 100644 --- a/src/components/LocaleContextProvider.tsx +++ b/src/components/LocaleContextProvider.tsx @@ -1,6 +1,6 @@ import React, {createContext, useMemo} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; import compose from '@libs/compose'; import DateUtils from '@libs/DateUtils'; diff --git a/src/components/LocalePicker.tsx b/src/components/LocalePicker.tsx index 20a86d41aa55..3a2d9a0fd7b9 100644 --- a/src/components/LocalePicker.tsx +++ b/src/components/LocalePicker.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Lottie/index.tsx b/src/components/Lottie/index.tsx index 8f29cd953460..5c672cf7cab6 100644 --- a/src/components/Lottie/index.tsx +++ b/src/components/Lottie/index.tsx @@ -1,7 +1,7 @@ import type {LottieViewProps} from 'lottie-react-native'; import LottieView from 'lottie-react-native'; import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import {View} from 'react-native'; import type DotLottieAnimation from '@components/LottieAnimations/types'; import useNetwork from '@hooks/useNetwork'; diff --git a/src/components/MapView/MapView.tsx b/src/components/MapView/MapView.tsx index 35e0ccca2124..6321b461f21e 100644 --- a/src/components/MapView/MapView.tsx +++ b/src/components/MapView/MapView.tsx @@ -1,6 +1,6 @@ import {useFocusEffect, useNavigation} from '@react-navigation/native'; import type {MapState} from '@rnmapbox/maps'; -import Mapbox, { MarkerView, setAccessToken} from '@rnmapbox/maps'; +import Mapbox, {MarkerView, setAccessToken} from '@rnmapbox/maps'; import {forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; diff --git a/src/components/MapView/MapView.website.tsx b/src/components/MapView/MapView.website.tsx index 13bea67ab012..05d86e8ec999 100644 --- a/src/components/MapView/MapView.website.tsx +++ b/src/components/MapView/MapView.website.tsx @@ -7,7 +7,7 @@ import mapboxgl from 'mapbox-gl'; import 'mapbox-gl/dist/mapbox-gl.css'; import React, {forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState} from 'react'; import type {MapRef} from 'react-map-gl'; -import Map, { Marker} from 'react-map-gl'; +import Map, {Marker} from 'react-map-gl'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import useStyleUtils from '@hooks/useStyleUtils'; diff --git a/src/components/MenuItem.tsx b/src/components/MenuItem.tsx index ff9dba0d96c1..14dfd0e8dbc4 100644 --- a/src/components/MenuItem.tsx +++ b/src/components/MenuItem.tsx @@ -1,9 +1,9 @@ import ExpensiMark from 'expensify-common/lib/ExpensiMark'; import type {ImageContentFit} from 'expo-image'; import type {ForwardedRef, ReactNode} from 'react'; -import React, { forwardRef, useEffect, useMemo, useRef, useState} from 'react'; +import React, {forwardRef, useEffect, useMemo, useRef, useState} from 'react'; import type {GestureResponderEvent, StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import type {AnimatedStyle} from 'react-native-reanimated'; import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; diff --git a/src/components/MenuItemWithTopDescription.tsx b/src/components/MenuItemWithTopDescription.tsx index 8e4db73848b5..0a48740de62e 100644 --- a/src/components/MenuItemWithTopDescription.tsx +++ b/src/components/MenuItemWithTopDescription.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {View} from 'react-native'; import MenuItem from './MenuItem'; import type {MenuItemProps} from './MenuItem'; diff --git a/src/components/MessagesRow.tsx b/src/components/MessagesRow.tsx index 45d35f36ed92..cfec6fd292e9 100644 --- a/src/components/MessagesRow.tsx +++ b/src/components/MessagesRow.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/MultipleAvatars.tsx b/src/components/MultipleAvatars.tsx index 38ced7551a74..3b4a074a2c44 100644 --- a/src/components/MultipleAvatars.tsx +++ b/src/components/MultipleAvatars.tsx @@ -1,6 +1,6 @@ import React, {memo, useMemo} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import type {ValueOf} from 'type-fest'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/OfflineIndicator.tsx b/src/components/OfflineIndicator.tsx index 8bc7ba69fd36..1a61b6622783 100644 --- a/src/components/OfflineIndicator.tsx +++ b/src/components/OfflineIndicator.tsx @@ -1,6 +1,6 @@ import React, {useMemo} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useTheme from '@hooks/useTheme'; diff --git a/src/components/OfflineWithFeedback.tsx b/src/components/OfflineWithFeedback.tsx index 1d715da78b69..fa0ae5162346 100644 --- a/src/components/OfflineWithFeedback.tsx +++ b/src/components/OfflineWithFeedback.tsx @@ -1,6 +1,6 @@ import React, {useCallback} from 'react'; import type {ImageStyle, StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useNetwork from '@hooks/useNetwork'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/OpacityView.tsx b/src/components/OpacityView.tsx index 1de09aad6b22..41ab148bd7f2 100644 --- a/src/components/OpacityView.tsx +++ b/src/components/OpacityView.tsx @@ -1,7 +1,7 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; import type {AnimatedStyle} from 'react-native-reanimated'; -import Animated, { useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; +import Animated, {useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import shouldRenderOffscreen from '@libs/shouldRenderOffscreen'; import variables from '@styles/variables'; diff --git a/src/components/OptionRow.tsx b/src/components/OptionRow.tsx index 994d297bc97c..79b72b378e46 100644 --- a/src/components/OptionRow.tsx +++ b/src/components/OptionRow.tsx @@ -1,6 +1,6 @@ import lodashIsEqual from 'lodash/isEqual'; import React, {useEffect, useRef, useState} from 'react'; -import type { StyleProp, TextStyle, ViewStyle} from 'react-native'; +import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; import {InteractionManager, StyleSheet, View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useStyleUtils from '@hooks/useStyleUtils'; diff --git a/src/components/Picker/BasePicker.tsx b/src/components/Picker/BasePicker.tsx index 2a45d99c4996..678bb6f06403 100644 --- a/src/components/Picker/BasePicker.tsx +++ b/src/components/Picker/BasePicker.tsx @@ -1,8 +1,8 @@ import lodashDefer from 'lodash/defer'; import type {ForwardedRef, ReactElement, ReactNode, RefObject} from 'react'; -import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; +import React, {forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; import type {ScrollView} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import RNPickerSelect from 'react-native-picker-select'; import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; diff --git a/src/components/Picker/index.native.tsx b/src/components/Picker/index.native.tsx index aaf7efed89d3..67968096f9f6 100644 --- a/src/components/Picker/index.native.tsx +++ b/src/components/Picker/index.native.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import BasePicker from './BasePicker'; import type {BasePickerHandle, BasePickerProps} from './types'; diff --git a/src/components/Picker/index.tsx b/src/components/Picker/index.tsx index 6dab7d01418d..591914b74d4c 100644 --- a/src/components/Picker/index.tsx +++ b/src/components/Picker/index.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import BasePicker from './BasePicker'; import type {AdditionalPickerEvents, BasePickerHandle, BasePickerProps, OnChange, OnMouseDown} from './types'; diff --git a/src/components/PlaidLink/index.native.tsx b/src/components/PlaidLink/index.native.tsx index 6b0f7845bb99..24ab75eb62b7 100644 --- a/src/components/PlaidLink/index.native.tsx +++ b/src/components/PlaidLink/index.native.tsx @@ -1,5 +1,5 @@ import {useEffect} from 'react'; -import type { LinkEvent} from 'react-native-plaid-link-sdk'; +import type {LinkEvent} from 'react-native-plaid-link-sdk'; import {dismissLink, openLink, usePlaidEmitter} from 'react-native-plaid-link-sdk'; import Log from '@libs/Log'; import CONST from '@src/CONST'; diff --git a/src/components/PlaidLink/index.tsx b/src/components/PlaidLink/index.tsx index 4e26d0c1ccaa..c3a913886f2c 100644 --- a/src/components/PlaidLink/index.tsx +++ b/src/components/PlaidLink/index.tsx @@ -1,7 +1,7 @@ import React, {useCallback, useEffect, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; import type {PlaidLinkOnSuccessMetadata} from 'react-plaid-link'; -import { usePlaidLink} from 'react-plaid-link'; +import {usePlaidLink} from 'react-plaid-link'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Log from '@libs/Log'; diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index 57865a4bd037..502bdbf83b53 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -1,6 +1,6 @@ import type {ImageContentFit} from 'expo-image'; import type {RefObject} from 'react'; -import React, { useRef} from 'react'; +import React, {useRef} from 'react'; import {View} from 'react-native'; import type {ModalProps} from 'react-native-modal'; import type {SvgProps} from 'react-native-svg'; diff --git a/src/components/PopoverWithMeasuredContent.tsx b/src/components/PopoverWithMeasuredContent.tsx index dd83b3f196d3..b636f90cd7ca 100644 --- a/src/components/PopoverWithMeasuredContent.tsx +++ b/src/components/PopoverWithMeasuredContent.tsx @@ -1,7 +1,7 @@ import isEqual from 'lodash/isEqual'; import React, {useMemo, useState} from 'react'; import type {LayoutChangeEvent} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import PopoverWithMeasuredContentUtils from '@libs/PopoverWithMeasuredContentUtils'; diff --git a/src/components/PopoverWithoutOverlay/index.tsx b/src/components/PopoverWithoutOverlay/index.tsx index 0479161c4ac4..6aed275bd2dc 100644 --- a/src/components/PopoverWithoutOverlay/index.tsx +++ b/src/components/PopoverWithoutOverlay/index.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef, useContext, useEffect, useMemo} from 'react'; +import React, {forwardRef, useContext, useEffect, useMemo} from 'react'; import {View} from 'react-native'; import ColorSchemeWrapper from '@components/ColorSchemeWrapper'; import {PopoverContext} from '@components/PopoverProvider'; diff --git a/src/components/PressableWithSecondaryInteraction/index.native.tsx b/src/components/PressableWithSecondaryInteraction/index.native.tsx index 94b7e4580a1e..d448e6d6ecc3 100644 --- a/src/components/PressableWithSecondaryInteraction/index.native.tsx +++ b/src/components/PressableWithSecondaryInteraction/index.native.tsx @@ -1,4 +1,4 @@ -import type { ReactNode} from 'react'; +import type {ReactNode} from 'react'; import React, {forwardRef} from 'react'; import type {GestureResponderEvent, TextProps} from 'react-native'; import type {PressableRef} from '@components/Pressable/GenericPressable/types'; diff --git a/src/components/RNTextInput.tsx b/src/components/RNTextInput.tsx index 6b540494a364..f7917a852704 100644 --- a/src/components/RNTextInput.tsx +++ b/src/components/RNTextInput.tsx @@ -1,7 +1,7 @@ import type {Component, ForwardedRef} from 'react'; import React from 'react'; // eslint-disable-next-line no-restricted-imports -import type { TextInputProps} from 'react-native'; +import type {TextInputProps} from 'react-native'; import {TextInput} from 'react-native'; import type {AnimatedProps} from 'react-native-reanimated'; import Animated from 'react-native-reanimated'; diff --git a/src/components/RadioButtonWithLabel.tsx b/src/components/RadioButtonWithLabel.tsx index 7368101a704a..f4bad4c082a7 100644 --- a/src/components/RadioButtonWithLabel.tsx +++ b/src/components/RadioButtonWithLabel.tsx @@ -1,7 +1,7 @@ import type {ComponentType} from 'react'; import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import FormHelpMessage from './FormHelpMessage'; import * as Pressables from './Pressable'; diff --git a/src/components/ReportActionItem/MoneyReportView.tsx b/src/components/ReportActionItem/MoneyReportView.tsx index 85d408bef0d3..16ea27b17f42 100644 --- a/src/components/ReportActionItem/MoneyReportView.tsx +++ b/src/components/ReportActionItem/MoneyReportView.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, TextStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import SpacerView from '@components/SpacerView'; diff --git a/src/components/ReportWelcomeText.tsx b/src/components/ReportWelcomeText.tsx index e2b1460a51f5..248f6894ca37 100644 --- a/src/components/ReportWelcomeText.tsx +++ b/src/components/ReportWelcomeText.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; diff --git a/src/components/ScrollViewWithContext.tsx b/src/components/ScrollViewWithContext.tsx index 2c1eb2bd1fbb..478a0555e89e 100644 --- a/src/components/ScrollViewWithContext.tsx +++ b/src/components/ScrollViewWithContext.tsx @@ -1,7 +1,7 @@ import type {ForwardedRef} from 'react'; -import React, { useMemo, useRef, useState} from 'react'; +import React, {useMemo, useRef, useState} from 'react'; import type {NativeScrollEvent, NativeSyntheticEvent} from 'react-native'; -import { ScrollView} from 'react-native'; +import {ScrollView} from 'react-native'; const MIN_SMOOTH_SCROLL_EVENT_THROTTLE = 16; diff --git a/src/components/Search.tsx b/src/components/Search.tsx index 87875d956589..0b02c5dc5b5b 100644 --- a/src/components/Search.tsx +++ b/src/components/Search.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {GestureResponderEvent, StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; diff --git a/src/components/SelectCircle.tsx b/src/components/SelectCircle.tsx index f21d8d4cdbf1..f20257bb9611 100644 --- a/src/components/SelectCircle.tsx +++ b/src/components/SelectCircle.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Icon from './Icon'; diff --git a/src/components/SingleChoiceQuestion.tsx b/src/components/SingleChoiceQuestion.tsx index 9f869ef969c4..4c2ba9c34a9f 100644 --- a/src/components/SingleChoiceQuestion.tsx +++ b/src/components/SingleChoiceQuestion.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {Text as RNText} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import type {MaybePhraseKey} from '@libs/Localize'; diff --git a/src/components/SplashScreenHider/index.native.tsx b/src/components/SplashScreenHider/index.native.tsx index b722f189f1c1..e31f391f7376 100644 --- a/src/components/SplashScreenHider/index.native.tsx +++ b/src/components/SplashScreenHider/index.native.tsx @@ -1,5 +1,5 @@ import {useCallback, useRef} from 'react'; -import type { ViewStyle} from 'react-native'; +import type {ViewStyle} from 'react-native'; import {StyleSheet} from 'react-native'; import Reanimated, {Easing, runOnJS, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import Logo from '@assets/images/new-expensify-dark.svg'; diff --git a/src/components/TaskHeaderActionButton.tsx b/src/components/TaskHeaderActionButton.tsx index 96f7e040ae0e..24acdf6c5f0b 100644 --- a/src/components/TaskHeaderActionButton.tsx +++ b/src/components/TaskHeaderActionButton.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ReportUtils from '@libs/ReportUtils'; diff --git a/src/components/TestToolMenu.tsx b/src/components/TestToolMenu.tsx index 74e099af2820..7c0b3a6e33e1 100644 --- a/src/components/TestToolMenu.tsx +++ b/src/components/TestToolMenu.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ApiUtils from '@libs/ApiUtils'; import compose from '@libs/compose'; diff --git a/src/components/TestToolsModal.tsx b/src/components/TestToolsModal.tsx index 574dd80257f7..2b1ec1e84c5b 100644 --- a/src/components/TestToolsModal.tsx +++ b/src/components/TestToolsModal.tsx @@ -1,7 +1,7 @@ import React from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import toggleTestToolsModal from '@userActions/TestTool'; import CONST from '@src/CONST'; diff --git a/src/components/Text.tsx b/src/components/Text.tsx index bf464aeb7270..f8f8a90168fa 100644 --- a/src/components/Text.tsx +++ b/src/components/Text.tsx @@ -1,7 +1,7 @@ import type {ForwardedRef} from 'react'; import React from 'react'; import {Text as RNText, StyleSheet} from 'react-native'; -import type {TextStyle, TextProps as RNTextProps} from 'react-native'; +import type {TextProps as RNTextProps, TextStyle} from 'react-native'; import useTheme from '@hooks/useTheme'; import fontFamily from '@styles/utils/fontFamily'; import variables from '@styles/variables'; diff --git a/src/components/TextInput/BaseTextInput/index.native.tsx b/src/components/TextInput/BaseTextInput/index.native.tsx index 7a5fc3a62838..f4cc1ee9e0ba 100644 --- a/src/components/TextInput/BaseTextInput/index.native.tsx +++ b/src/components/TextInput/BaseTextInput/index.native.tsx @@ -1,7 +1,7 @@ import Str from 'expensify-common/lib/str'; import React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react'; import {ActivityIndicator, Animated, StyleSheet, View} from 'react-native'; -import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInputFocusEventData, ViewStyle, TextInput} from 'react-native'; +import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInput, TextInputFocusEventData, ViewStyle} from 'react-native'; import Checkbox from '@components/Checkbox'; import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; diff --git a/src/components/TextInput/BaseTextInput/index.tsx b/src/components/TextInput/BaseTextInput/index.tsx index 89711cd0859f..d548041b0cf8 100644 --- a/src/components/TextInput/BaseTextInput/index.tsx +++ b/src/components/TextInput/BaseTextInput/index.tsx @@ -1,7 +1,7 @@ import Str from 'expensify-common/lib/str'; import React, {forwardRef, useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {ActivityIndicator, Animated, StyleSheet, View} from 'react-native'; -import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInputFocusEventData, ViewStyle, TextInput} from 'react-native'; +import type {GestureResponderEvent, LayoutChangeEvent, NativeSyntheticEvent, StyleProp, TextInput, TextInputFocusEventData, ViewStyle} from 'react-native'; import Checkbox from '@components/Checkbox'; import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; diff --git a/src/components/TextInput/TextInputLabel/index.tsx b/src/components/TextInput/TextInputLabel/index.tsx index 7f1263ac273d..507d40f475a7 100644 --- a/src/components/TextInput/TextInputLabel/index.tsx +++ b/src/components/TextInput/TextInputLabel/index.tsx @@ -1,5 +1,5 @@ import React, {useEffect, useRef} from 'react'; -import type { Text} from 'react-native'; +import type {Text} from 'react-native'; import {Animated} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; diff --git a/src/components/TextLink.tsx b/src/components/TextLink.tsx index 435f56484de7..d3c515115d56 100644 --- a/src/components/TextLink.tsx +++ b/src/components/TextLink.tsx @@ -1,5 +1,5 @@ import type {ForwardedRef, KeyboardEventHandler, MouseEventHandler} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {GestureResponderEvent, Text as RNText, StyleProp, TextStyle} from 'react-native'; import useEnvironment from '@hooks/useEnvironment'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/TextWithEllipsis/index.tsx b/src/components/TextWithEllipsis/index.tsx index f4fdc5b5a431..1efbece7d49e 100644 --- a/src/components/TextWithEllipsis/index.tsx +++ b/src/components/TextWithEllipsis/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import Text from '@components/Text'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/ThumbnailImage.tsx b/src/components/ThumbnailImage.tsx index d40f840bc141..3c903ee9e78f 100644 --- a/src/components/ThumbnailImage.tsx +++ b/src/components/ThumbnailImage.tsx @@ -1,6 +1,6 @@ import lodashClamp from 'lodash/clamp'; import React, {useCallback, useState} from 'react'; -import type { StyleProp, ViewStyle} from 'react-native'; +import type {StyleProp, ViewStyle} from 'react-native'; import {Dimensions, View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/components/Tooltip/BaseTooltip/index.tsx b/src/components/Tooltip/BaseTooltip/index.tsx index c284016a593f..cf249a936f0b 100644 --- a/src/components/Tooltip/BaseTooltip/index.tsx +++ b/src/components/Tooltip/BaseTooltip/index.tsx @@ -1,6 +1,6 @@ import {BoundsObserver} from '@react-ng/bounds-observer'; import type {ForwardedRef} from 'react'; -import React, { forwardRef, memo, useCallback, useEffect, useRef, useState} from 'react'; +import React, {forwardRef, memo, useCallback, useEffect, useRef, useState} from 'react'; import {Animated} from 'react-native'; import Hoverable from '@components/Hoverable'; import TooltipRenderedOnPageBody from '@components/Tooltip/TooltipRenderedOnPageBody'; diff --git a/src/components/ValidateCode/ValidateCodeModal.tsx b/src/components/ValidateCode/ValidateCodeModal.tsx index 715f07070975..9c83a80b0d24 100644 --- a/src/components/ValidateCode/ValidateCodeModal.tsx +++ b/src/components/ValidateCode/ValidateCodeModal.tsx @@ -1,7 +1,7 @@ import React, {useCallback} from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import * as Illustrations from '@components/Icon/Illustrations'; diff --git a/src/components/WalletStatementModal/index.native.tsx b/src/components/WalletStatementModal/index.native.tsx index a287c68504dc..8dbc743a02ee 100644 --- a/src/components/WalletStatementModal/index.native.tsx +++ b/src/components/WalletStatementModal/index.native.tsx @@ -1,6 +1,6 @@ import React, {useCallback, useRef} from 'react'; import {withOnyx} from 'react-native-onyx'; -import type { WebViewNavigation} from 'react-native-webview'; +import type {WebViewNavigation} from 'react-native-webview'; import {WebView} from 'react-native-webview'; import type {ValueOf} from 'type-fest'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; diff --git a/src/components/createOnyxContext.tsx b/src/components/createOnyxContext.tsx index 99f48ea80d5f..4fb8b9a7281c 100644 --- a/src/components/createOnyxContext.tsx +++ b/src/components/createOnyxContext.tsx @@ -1,6 +1,6 @@ import Str from 'expensify-common/lib/str'; import type {ComponentType, ForwardedRef, ForwardRefExoticComponent, PropsWithoutRef, ReactNode, RefAttributes} from 'react'; -import React, { createContext, forwardRef, useContext} from 'react'; +import React, {createContext, forwardRef, useContext} from 'react'; import {withOnyx} from 'react-native-onyx'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import type {OnyxCollectionKey, OnyxKey, OnyxKeyValue, OnyxValues} from '@src/ONYXKEYS'; diff --git a/src/components/withCurrentReportID.tsx b/src/components/withCurrentReportID.tsx index b1f84db36257..a452e7565b4e 100644 --- a/src/components/withCurrentReportID.tsx +++ b/src/components/withCurrentReportID.tsx @@ -1,7 +1,7 @@ import type {NavigationState} from '@react-navigation/native'; import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { createContext, forwardRef, useCallback, useMemo, useState} from 'react'; +import React, {createContext, forwardRef, useCallback, useMemo, useState} from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import Navigation from '@libs/Navigation/Navigation'; diff --git a/src/components/withCurrentUserPersonalDetails.tsx b/src/components/withCurrentUserPersonalDetails.tsx index d329aa2a5c2d..9406c8634c1b 100644 --- a/src/components/withCurrentUserPersonalDetails.tsx +++ b/src/components/withCurrentUserPersonalDetails.tsx @@ -1,7 +1,7 @@ import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { useMemo} from 'react'; +import React, {useMemo} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import personalDetailsPropType from '@pages/personalDetailsPropType'; import CONST from '@src/CONST'; diff --git a/src/components/withEnvironment.tsx b/src/components/withEnvironment.tsx index 21854c11b5ce..bd57ed5da696 100644 --- a/src/components/withEnvironment.tsx +++ b/src/components/withEnvironment.tsx @@ -1,5 +1,5 @@ import type {ComponentType, ForwardedRef, ReactElement, ReactNode, RefAttributes} from 'react'; -import React, { createContext, forwardRef, useContext, useEffect, useMemo, useState} from 'react'; +import React, {createContext, forwardRef, useContext, useEffect, useMemo, useState} from 'react'; import type {ValueOf} from 'type-fest'; import * as Environment from '@libs/Environment/Environment'; import getComponentDisplayName from '@libs/getComponentDisplayName'; diff --git a/src/components/withKeyboardState.tsx b/src/components/withKeyboardState.tsx index 958c1fe4f867..2a74fd3e738e 100755 --- a/src/components/withKeyboardState.tsx +++ b/src/components/withKeyboardState.tsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; -import React, { createContext, forwardRef, useEffect, useMemo, useState} from 'react'; +import React, {createContext, forwardRef, useEffect, useMemo, useState} from 'react'; import {Keyboard} from 'react-native'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import type ChildrenProps from '@src/types/utils/ChildrenProps'; diff --git a/src/components/withLocalize.tsx b/src/components/withLocalize.tsx index c1b756cde08f..f198ed9156e1 100755 --- a/src/components/withLocalize.tsx +++ b/src/components/withLocalize.tsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; -import type { LocaleContextProps} from './LocaleContextProvider'; +import type {LocaleContextProps} from './LocaleContextProvider'; import {LocaleContext} from './LocaleContextProvider'; const withLocalizePropTypes = { diff --git a/src/components/withNavigation.tsx b/src/components/withNavigation.tsx index aae8c157d75a..1d9b2a5f5cb0 100644 --- a/src/components/withNavigation.tsx +++ b/src/components/withNavigation.tsx @@ -1,5 +1,5 @@ import type {NavigationProp} from '@react-navigation/native'; -import { useNavigation} from '@react-navigation/native'; +import {useNavigation} from '@react-navigation/native'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; import React from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; diff --git a/src/components/withNavigationFallback.tsx b/src/components/withNavigationFallback.tsx index 5a8011205a00..5d39f71fcb86 100644 --- a/src/components/withNavigationFallback.tsx +++ b/src/components/withNavigationFallback.tsx @@ -2,7 +2,7 @@ import {NavigationContext} from '@react-navigation/core'; import type {NavigationProp} from '@react-navigation/native'; import type {ParamListBase} from '@react-navigation/routers'; import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; -import React, { forwardRef, useContext, useMemo} from 'react'; +import React, {forwardRef, useContext, useMemo} from 'react'; type AddListenerCallback = () => void; diff --git a/src/components/withStyleUtils.tsx b/src/components/withStyleUtils.tsx index cc45738c5bbf..881aa9cbe4ae 100644 --- a/src/components/withStyleUtils.tsx +++ b/src/components/withStyleUtils.tsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import useStyleUtils from '@hooks/useStyleUtils'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import type {StyleUtilsType} from '@styles/utils'; diff --git a/src/components/withTheme.tsx b/src/components/withTheme.tsx index 75f3e571282c..b9b81d6daac2 100644 --- a/src/components/withTheme.tsx +++ b/src/components/withTheme.tsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import useTheme from '@hooks/useTheme'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import type {ThemeColors} from '@styles/theme/types'; diff --git a/src/components/withThemeStyles.tsx b/src/components/withThemeStyles.tsx index 8b02897eb8d9..be1f26fd966c 100644 --- a/src/components/withThemeStyles.tsx +++ b/src/components/withThemeStyles.tsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, ReactElement, RefAttributes} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import useThemeStyles from '@hooks/useThemeStyles'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import type {ThemeStyles} from '@styles/index'; diff --git a/src/components/withViewportOffsetTop.tsx b/src/components/withViewportOffsetTop.tsx index 424bedb14870..d3e9b63ad3ee 100644 --- a/src/components/withViewportOffsetTop.tsx +++ b/src/components/withViewportOffsetTop.tsx @@ -1,5 +1,5 @@ import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { forwardRef, useEffect, useState} from 'react'; +import React, {forwardRef, useEffect, useState} from 'react'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import addViewportResizeListener from '@libs/VisualViewport'; diff --git a/src/components/withWindowDimensions/index.native.tsx b/src/components/withWindowDimensions/index.native.tsx index e1300a5584f5..073c1f22575b 100644 --- a/src/components/withWindowDimensions/index.native.tsx +++ b/src/components/withWindowDimensions/index.native.tsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { createContext, useEffect, useMemo, useState} from 'react'; +import React, {createContext, useEffect, useMemo, useState} from 'react'; import {Dimensions} from 'react-native'; import useSafeAreaInsets from '@hooks/useSafeAreaInsets'; import getComponentDisplayName from '@libs/getComponentDisplayName'; diff --git a/src/components/withWindowDimensions/index.tsx b/src/components/withWindowDimensions/index.tsx index e761881a1788..b2a3a58726bf 100644 --- a/src/components/withWindowDimensions/index.tsx +++ b/src/components/withWindowDimensions/index.tsx @@ -1,7 +1,7 @@ import lodashDebounce from 'lodash/debounce'; import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { createContext, useEffect, useMemo, useState} from 'react'; +import React, {createContext, useEffect, useMemo, useState} from 'react'; import {Dimensions} from 'react-native'; import useSafeAreaInsets from '@hooks/useSafeAreaInsets'; import getComponentDisplayName from '@libs/getComponentDisplayName'; diff --git a/src/hooks/useAutoFocusInput.ts b/src/hooks/useAutoFocusInput.ts index 96e60489afc9..20d0dee1f407 100644 --- a/src/hooks/useAutoFocusInput.ts +++ b/src/hooks/useAutoFocusInput.ts @@ -1,6 +1,6 @@ import {useFocusEffect} from '@react-navigation/native'; import {useCallback, useContext, useEffect, useRef, useState} from 'react'; -import type { TextInput} from 'react-native'; +import type {TextInput} from 'react-native'; import {InteractionManager} from 'react-native'; import CONST from '@src/CONST'; import * as Expensify from '@src/Expensify'; diff --git a/src/hooks/useCurrentReportID.tsx b/src/hooks/useCurrentReportID.tsx index 11ad4caabb88..d2934cd65b62 100644 --- a/src/hooks/useCurrentReportID.tsx +++ b/src/hooks/useCurrentReportID.tsx @@ -1,5 +1,5 @@ import {useContext} from 'react'; -import type { CurrentReportIDContextValue} from '@components/withCurrentReportID'; +import type {CurrentReportIDContextValue} from '@components/withCurrentReportID'; import {CurrentReportIDContext} from '@components/withCurrentReportID'; export default function useCurrentReportID(): CurrentReportIDContextValue | null { diff --git a/src/hooks/useDelayedInputFocus.ts b/src/hooks/useDelayedInputFocus.ts index 4942de265340..41132ae3f656 100644 --- a/src/hooks/useDelayedInputFocus.ts +++ b/src/hooks/useDelayedInputFocus.ts @@ -1,6 +1,6 @@ import {useFocusEffect} from '@react-navigation/native'; import type {MutableRefObject} from 'react'; -import { useCallback, useRef} from 'react'; +import {useCallback, useRef} from 'react'; import type {TextInput} from 'react-native'; import CONST from '@src/CONST'; diff --git a/src/hooks/useInitialWindowDimensions/index.ts b/src/hooks/useInitialWindowDimensions/index.ts index f86829f8ac81..6dbb116e2e88 100644 --- a/src/hooks/useInitialWindowDimensions/index.ts +++ b/src/hooks/useInitialWindowDimensions/index.ts @@ -1,6 +1,6 @@ // eslint-disable-next-line no-restricted-imports import {useEffect, useState} from 'react'; -import {Dimensions } from 'react-native'; +import {Dimensions} from 'react-native'; import type {ScaledSize} from 'react-native'; type InitialWindowDimensions = { diff --git a/src/hooks/useKeyboardState.ts b/src/hooks/useKeyboardState.ts index 6c312d448af8..439f626ddcdd 100644 --- a/src/hooks/useKeyboardState.ts +++ b/src/hooks/useKeyboardState.ts @@ -1,5 +1,5 @@ import {useContext} from 'react'; -import type { KeyboardStateContextValue} from '@components/withKeyboardState'; +import type {KeyboardStateContextValue} from '@components/withKeyboardState'; import {KeyboardStateContext} from '@components/withKeyboardState'; /** diff --git a/src/hooks/useLocalize.ts b/src/hooks/useLocalize.ts index dd68b9e8df05..6259187e433f 100644 --- a/src/hooks/useLocalize.ts +++ b/src/hooks/useLocalize.ts @@ -1,5 +1,5 @@ import {useContext} from 'react'; -import type { LocaleContextProps} from '@components/LocaleContextProvider'; +import type {LocaleContextProps} from '@components/LocaleContextProvider'; import {LocaleContext} from '@components/LocaleContextProvider'; export default function useLocalize(): LocaleContextProps { diff --git a/src/hooks/useResponsiveLayout.ts b/src/hooks/useResponsiveLayout.ts index 55b3bd0b4af9..dd782a9dbba5 100644 --- a/src/hooks/useResponsiveLayout.ts +++ b/src/hooks/useResponsiveLayout.ts @@ -1,5 +1,5 @@ import type {ParamListBase, RouteProp} from '@react-navigation/native'; -import { useRoute} from '@react-navigation/native'; +import {useRoute} from '@react-navigation/native'; import useWindowDimensions from './useWindowDimensions'; type RouteParams = ParamListBase & { diff --git a/src/hooks/useScrollContext.ts b/src/hooks/useScrollContext.ts index bdaaf298c1e2..3adb91fe2abf 100644 --- a/src/hooks/useScrollContext.ts +++ b/src/hooks/useScrollContext.ts @@ -1,5 +1,5 @@ import {useContext} from 'react'; -import type { ScrollContextValue} from '@components/ScrollViewWithContext'; +import type {ScrollContextValue} from '@components/ScrollViewWithContext'; import {ScrollContext} from '@components/ScrollViewWithContext'; export default function useScrollContext(): ScrollContextValue { diff --git a/src/libs/Accessibility/index.ts b/src/libs/Accessibility/index.ts index a803e5cc36f7..167634acce56 100644 --- a/src/libs/Accessibility/index.ts +++ b/src/libs/Accessibility/index.ts @@ -1,5 +1,5 @@ import {useCallback, useEffect, useState} from 'react'; -import type { LayoutChangeEvent} from 'react-native'; +import type {LayoutChangeEvent} from 'react-native'; import {AccessibilityInfo} from 'react-native'; import moveAccessibilityFocus from './moveAccessibilityFocus'; diff --git a/src/libs/AppStateMonitor/index.ts b/src/libs/AppStateMonitor/index.ts index cd9deb7797cb..e89d92b35be4 100644 --- a/src/libs/AppStateMonitor/index.ts +++ b/src/libs/AppStateMonitor/index.ts @@ -1,4 +1,4 @@ -import type { AppStateStatus} from 'react-native'; +import type {AppStateStatus} from 'react-native'; import {AppState} from 'react-native'; import CONST from '@src/CONST'; import shouldReportActivity from './shouldReportActivity'; diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx index 3751b9ebd29f..58825ae6f2b1 100644 --- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx +++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx @@ -1,7 +1,7 @@ import React, {memo, useEffect, useRef} from 'react'; import {View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; -import Onyx, { withOnyx} from 'react-native-onyx'; +import Onyx, {withOnyx} from 'react-native-onyx'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import KeyboardShortcut from '@libs/KeyboardShortcut'; diff --git a/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts b/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts index 4d6ef3c6df4a..e49a94bf4ed7 100644 --- a/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts +++ b/src/libs/Navigation/AppNavigator/ModalNavigatorScreenOptions.ts @@ -1,4 +1,4 @@ -import type { StackNavigationOptions} from '@react-navigation/stack'; +import type {StackNavigationOptions} from '@react-navigation/stack'; import {CardStyleInterpolators} from '@react-navigation/stack'; import type {ThemeStyles} from '@styles/index'; diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx index ad8c717f63a1..e177f1c2003d 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx @@ -1,5 +1,5 @@ import type {ParamListBase} from '@react-navigation/routers'; -import type { StackNavigationOptions} from '@react-navigation/stack'; +import type {StackNavigationOptions} from '@react-navigation/stack'; import {CardStyleInterpolators, createStackNavigator} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import useThemeStyles from '@hooks/useThemeStyles'; diff --git a/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx index 8f5e811ef674..4e78231b6b6e 100644 --- a/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx @@ -1,4 +1,4 @@ -import type { StackScreenProps} from '@react-navigation/stack'; +import type {StackScreenProps} from '@react-navigation/stack'; import {createStackNavigator} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import {View} from 'react-native'; diff --git a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx index d7a4fc121495..ca33b32113bb 100644 --- a/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/Navigators/RightModalNavigator.tsx @@ -1,4 +1,4 @@ -import type { StackScreenProps} from '@react-navigation/stack'; +import type {StackScreenProps} from '@react-navigation/stack'; import {createStackNavigator} from '@react-navigation/stack'; import React, {useMemo} from 'react'; import {View} from 'react-native'; diff --git a/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts b/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts index 49002ce592bd..e6e9a7746585 100644 --- a/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts +++ b/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.ts @@ -1,6 +1,6 @@ import {useEffect} from 'react'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import usePermissions from '@hooks/usePermissions'; import * as ReportUtils from '@libs/ReportUtils'; import * as App from '@userActions/App'; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts index 526541b40f54..10cee2c85952 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts @@ -1,5 +1,5 @@ import type {NavigationState, PartialState, RouterConfigOptions, StackNavigationState} from '@react-navigation/native'; -import { StackRouter} from '@react-navigation/native'; +import {StackRouter} from '@react-navigation/native'; import type {ParamListBase} from '@react-navigation/routers'; import getIsSmallScreenWidth from '@libs/getIsSmallScreenWidth'; import NAVIGATORS from '@src/NAVIGATORS'; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx index d8e57c1aabf1..151dd0a0f893 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx @@ -1,7 +1,7 @@ -import type { ParamListBase, StackActionHelpers, StackNavigationState} from '@react-navigation/native'; +import type {ParamListBase, StackActionHelpers, StackNavigationState} from '@react-navigation/native'; import {createNavigatorFactory, useNavigationBuilder} from '@react-navigation/native'; import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack'; -import { StackView} from '@react-navigation/stack'; +import {StackView} from '@react-navigation/stack'; import React, {useRef} from 'react'; import useWindowDimensions from '@hooks/useWindowDimensions'; import CustomRouter from './CustomRouter'; diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx index 02fe493b78f1..3f6025d5ff0c 100644 --- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx +++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx @@ -1,7 +1,7 @@ -import type { ParamListBase, StackActionHelpers, StackNavigationState} from '@react-navigation/native'; +import type {ParamListBase, StackActionHelpers, StackNavigationState} from '@react-navigation/native'; import {createNavigatorFactory, useNavigationBuilder} from '@react-navigation/native'; import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack'; -import { StackView} from '@react-navigation/stack'; +import {StackView} from '@react-navigation/stack'; import React, {useMemo, useRef} from 'react'; import useWindowDimensions from '@hooks/useWindowDimensions'; import NAVIGATORS from '@src/NAVIGATORS'; diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts index 509e4cd93d85..cc77cd1c4908 100644 --- a/src/libs/Navigation/Navigation.ts +++ b/src/libs/Navigation/Navigation.ts @@ -1,5 +1,5 @@ import {findFocusedRoute} from '@react-navigation/core'; -import type { EventArg, NavigationContainerEventMap, NavigationState, PartialState} from '@react-navigation/native'; +import type {EventArg, NavigationContainerEventMap, NavigationState, PartialState} from '@react-navigation/native'; import {CommonActions, getPathFromState, StackActions} from '@react-navigation/native'; import Log from '@libs/Log'; import CONST from '@src/CONST'; diff --git a/src/libs/Navigation/NavigationRoot.tsx b/src/libs/Navigation/NavigationRoot.tsx index a2abe02d3102..79ec18d28d4f 100644 --- a/src/libs/Navigation/NavigationRoot.tsx +++ b/src/libs/Navigation/NavigationRoot.tsx @@ -1,4 +1,4 @@ -import type { NavigationState} from '@react-navigation/native'; +import type {NavigationState} from '@react-navigation/native'; import {DefaultTheme, getPathFromState, NavigationContainer} from '@react-navigation/native'; import React, {useEffect, useMemo, useRef} from 'react'; import useCurrentReportID from '@hooks/useCurrentReportID'; diff --git a/src/libs/Navigation/OnyxTabNavigator.tsx b/src/libs/Navigation/OnyxTabNavigator.tsx index c7bfc7396295..624aaec72bda 100644 --- a/src/libs/Navigation/OnyxTabNavigator.tsx +++ b/src/libs/Navigation/OnyxTabNavigator.tsx @@ -1,4 +1,4 @@ -import type { MaterialTopTabNavigationEventMap} from '@react-navigation/material-top-tabs'; +import type {MaterialTopTabNavigationEventMap} from '@react-navigation/material-top-tabs'; import {createMaterialTopTabNavigator} from '@react-navigation/material-top-tabs'; import type {EventMapCore, NavigationState, ScreenListeners} from '@react-navigation/native'; import React from 'react'; diff --git a/src/libs/Navigation/dismissModal.ts b/src/libs/Navigation/dismissModal.ts index c262def49738..917f1c86c90c 100644 --- a/src/libs/Navigation/dismissModal.ts +++ b/src/libs/Navigation/dismissModal.ts @@ -1,6 +1,6 @@ import {getActionFromState} from '@react-navigation/core'; import type {NavigationContainerRef} from '@react-navigation/native'; -import { StackActions} from '@react-navigation/native'; +import {StackActions} from '@react-navigation/native'; import {findLastIndex} from 'lodash'; import Log from '@libs/Log'; import NAVIGATORS from '@src/NAVIGATORS'; diff --git a/src/libs/Navigation/getStateFromPath.ts b/src/libs/Navigation/getStateFromPath.ts index f0c272a678e3..0476ffac1494 100644 --- a/src/libs/Navigation/getStateFromPath.ts +++ b/src/libs/Navigation/getStateFromPath.ts @@ -1,5 +1,5 @@ import type {NavigationState, PartialState} from '@react-navigation/native'; -import { getStateFromPath as RNGetStateFromPath} from '@react-navigation/native'; +import {getStateFromPath as RNGetStateFromPath} from '@react-navigation/native'; import type {Route} from '@src/ROUTES'; import linkingConfig from './linkingConfig'; diff --git a/src/libs/Notification/PushNotification/index.native.ts b/src/libs/Notification/PushNotification/index.native.ts index b172c4d4f7ac..382591e5b698 100644 --- a/src/libs/Notification/PushNotification/index.native.ts +++ b/src/libs/Notification/PushNotification/index.native.ts @@ -1,4 +1,4 @@ -import type { PushPayload} from '@ua/react-native-airship'; +import type {PushPayload} from '@ua/react-native-airship'; import Airship, {EventType} from '@ua/react-native-airship'; import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index 57e3dcb94cb5..0cab97299324 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -4,7 +4,7 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {PersonalDetailsList, Policy, PolicyMembers, PolicyTag, PolicyTags} from '@src/types/onyx'; import type {EmptyObject} from '@src/types/utils/EmptyObject'; -import { isEmptyObject} from '@src/types/utils/EmptyObject'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; type MemberEmailsToAccountIDs = Record; type UnitRate = {rate: number}; diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 6f1425f9b152..c8b7e673aed4 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -11,7 +11,7 @@ import type Report from '@src/types/onyx/Report'; import type {Message, ReportActions} from '@src/types/onyx/ReportAction'; import type ReportAction from '@src/types/onyx/ReportAction'; import type {EmptyObject} from '@src/types/utils/EmptyObject'; -import { isEmptyObject} from '@src/types/utils/EmptyObject'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; import * as CollectionUtils from './CollectionUtils'; import * as Environment from './Environment/Environment'; import isReportMessageAttachment from './isReportMessageAttachment'; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index a51220bd1df4..33a18b8534df 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -23,7 +23,7 @@ import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/Rep import type {Receipt, WaypointCollection} from '@src/types/onyx/Transaction'; import type DeepValueOf from '@src/types/utils/DeepValueOf'; import type {EmptyObject} from '@src/types/utils/EmptyObject'; -import { isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; +import {isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; import type IconAsset from '@src/types/utils/IconAsset'; import * as CurrencyUtils from './CurrencyUtils'; import DateUtils from './DateUtils'; diff --git a/src/libs/SelectionScraper/index.ts b/src/libs/SelectionScraper/index.ts index ebd06a342a51..955fe693c856 100644 --- a/src/libs/SelectionScraper/index.ts +++ b/src/libs/SelectionScraper/index.ts @@ -1,5 +1,5 @@ import render from 'dom-serializer'; -import type { Node} from 'domhandler'; +import type {Node} from 'domhandler'; import {DataNode, Element} from 'domhandler'; import Str from 'expensify-common/lib/str'; import {parseDocument} from 'htmlparser2'; diff --git a/src/libs/actions/App.ts b/src/libs/actions/App.ts index dc816ebce8cb..f88bfe09e516 100644 --- a/src/libs/actions/App.ts +++ b/src/libs/actions/App.ts @@ -1,6 +1,6 @@ // Issue - https://github.com/Expensify/App/issues/26719 import Str from 'expensify-common/lib/str'; -import type { AppStateStatus} from 'react-native'; +import type {AppStateStatus} from 'react-native'; import {AppState} from 'react-native'; import type {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; diff --git a/src/libs/actions/MapboxToken.ts b/src/libs/actions/MapboxToken.ts index 42f8abf352f0..54f99b58fbeb 100644 --- a/src/libs/actions/MapboxToken.ts +++ b/src/libs/actions/MapboxToken.ts @@ -1,5 +1,5 @@ import {isAfter} from 'date-fns'; -import type { NativeEventSubscription} from 'react-native'; +import type {NativeEventSubscription} from 'react-native'; import {AppState} from 'react-native'; import Onyx from 'react-native-onyx'; import * as ActiveClientManager from '@libs/ActiveClientManager'; diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index 9b8e68168df7..13e4222f942f 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -38,7 +38,7 @@ import type Report from '@src/types/onyx/Report'; import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; import type ReportAction from '@src/types/onyx/ReportAction'; import type {EmptyObject} from '@src/types/utils/EmptyObject'; -import { isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; +import {isEmptyObject, isNotEmptyObject} from '@src/types/utils/EmptyObject'; import * as Session from './Session'; import * as Welcome from './Welcome'; diff --git a/src/libs/getCurrentPosition/index.android.ts b/src/libs/getCurrentPosition/index.android.ts index 77ecdf236149..bd27944b8830 100644 --- a/src/libs/getCurrentPosition/index.android.ts +++ b/src/libs/getCurrentPosition/index.android.ts @@ -2,7 +2,7 @@ // If we update our react native version, we need to test this file again import Geolocation from '@react-native-community/geolocation'; import RNAndroidLocationEnabler from 'react-native-android-location-enabler'; -import type { GetCurrentPosition} from './getCurrentPosition.types'; +import type {GetCurrentPosition} from './getCurrentPosition.types'; import {GeolocationErrorCode} from './getCurrentPosition.types'; Geolocation.setRNConfiguration({ diff --git a/src/libs/getCurrentPosition/index.ts b/src/libs/getCurrentPosition/index.ts index 2bfefe431892..318d4f64ed34 100644 --- a/src/libs/getCurrentPosition/index.ts +++ b/src/libs/getCurrentPosition/index.ts @@ -1,4 +1,4 @@ -import type { GetCurrentPosition} from './getCurrentPosition.types'; +import type {GetCurrentPosition} from './getCurrentPosition.types'; import {GeolocationErrorCode} from './getCurrentPosition.types'; const getCurrentPosition: GetCurrentPosition = (success, error, options) => { diff --git a/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts b/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts index 264ebe4384de..8d5ef578b66c 100644 --- a/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts +++ b/src/libs/setShouldShowComposeInputKeyboardAware/setShouldShowComposeInputKeyboardAwareBuilder.ts @@ -1,5 +1,5 @@ import type {EmitterSubscription} from 'react-native'; -import { Keyboard} from 'react-native'; +import {Keyboard} from 'react-native'; import type {KeyboardEventName} from 'react-native/Libraries/Components/Keyboard/Keyboard'; import * as Composer from '@userActions/Composer'; import type SetShouldShowComposeInputKeyboardAware from './types'; diff --git a/src/pages/UnlinkLoginPage.tsx b/src/pages/UnlinkLoginPage.tsx index 5f63da70b4ee..c8be7a16f3f6 100644 --- a/src/pages/UnlinkLoginPage.tsx +++ b/src/pages/UnlinkLoginPage.tsx @@ -1,6 +1,6 @@ import type {StackScreenProps} from '@react-navigation/stack'; import React, {useEffect} from 'react'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import usePrevious from '@hooks/usePrevious'; diff --git a/src/pages/home/ReportScreenContext.ts b/src/pages/home/ReportScreenContext.ts index 28ceb77cfd0d..98d593b92d91 100644 --- a/src/pages/home/ReportScreenContext.ts +++ b/src/pages/home/ReportScreenContext.ts @@ -1,4 +1,4 @@ -import type { RefObject} from 'react'; +import type {RefObject} from 'react'; import {createContext} from 'react'; import type {FlatList, GestureResponderEvent} from 'react-native'; diff --git a/src/pages/home/report/ReportActionItemGrouped.tsx b/src/pages/home/report/ReportActionItemGrouped.tsx index 3fb2cea2a8b4..f493f7a89334 100644 --- a/src/pages/home/report/ReportActionItemGrouped.tsx +++ b/src/pages/home/report/ReportActionItemGrouped.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import useThemeStyles from '@hooks/useThemeStyles'; import type ChildrenProps from '@src/types/utils/ChildrenProps'; diff --git a/src/pages/home/report/ReportActionItemMessage.tsx b/src/pages/home/report/ReportActionItemMessage.tsx index 36b677b64718..d98d1b901578 100644 --- a/src/pages/home/report/ReportActionItemMessage.tsx +++ b/src/pages/home/report/ReportActionItemMessage.tsx @@ -1,7 +1,7 @@ import type {ReactElement} from 'react'; import React from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { Text, View} from 'react-native'; +import {Text, View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as ReportActionsUtils from '@libs/ReportActionsUtils'; diff --git a/src/pages/home/report/ReportActionItemSingle.tsx b/src/pages/home/report/ReportActionItemSingle.tsx index 11a221bf9928..9306d94b4269 100644 --- a/src/pages/home/report/ReportActionItemSingle.tsx +++ b/src/pages/home/report/ReportActionItemSingle.tsx @@ -1,6 +1,6 @@ import React, {useCallback, useMemo} from 'react'; import type {StyleProp, ViewStyle} from 'react-native'; -import { View} from 'react-native'; +import {View} from 'react-native'; import Avatar from '@components/Avatar'; import MultipleAvatars from '@components/MultipleAvatars'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; diff --git a/src/pages/home/report/withReportAndReportActionOrNotFound.tsx b/src/pages/home/report/withReportAndReportActionOrNotFound.tsx index c628ff389817..fb0a00e2d10d 100644 --- a/src/pages/home/report/withReportAndReportActionOrNotFound.tsx +++ b/src/pages/home/report/withReportAndReportActionOrNotFound.tsx @@ -1,9 +1,9 @@ /* eslint-disable rulesdir/no-negated-variables */ import type {RouteProp} from '@react-navigation/native'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { useCallback, useEffect} from 'react'; +import React, {useCallback, useEffect} from 'react'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import withWindowDimensions from '@components/withWindowDimensions'; import type {WindowDimensionsProps} from '@components/withWindowDimensions/types'; diff --git a/src/pages/home/report/withReportOrNotFound.tsx b/src/pages/home/report/withReportOrNotFound.tsx index 2ae1655c66c0..7613bafeacdc 100644 --- a/src/pages/home/report/withReportOrNotFound.tsx +++ b/src/pages/home/report/withReportOrNotFound.tsx @@ -3,7 +3,7 @@ import type {RouteProp} from '@react-navigation/native'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; import React from 'react'; import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import getComponentDisplayName from '@libs/getComponentDisplayName'; import * as ReportUtils from '@libs/ReportUtils'; diff --git a/src/pages/workspace/withPolicy.tsx b/src/pages/workspace/withPolicy.tsx index b1cd9ce69d62..90eda3651a04 100644 --- a/src/pages/workspace/withPolicy.tsx +++ b/src/pages/workspace/withPolicy.tsx @@ -1,10 +1,10 @@ import type {RouteProp} from '@react-navigation/native'; -import { useNavigationState} from '@react-navigation/native'; +import {useNavigationState} from '@react-navigation/native'; import PropTypes from 'prop-types'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import policyMemberPropType from '@pages/policyMemberPropType'; import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; diff --git a/src/pages/workspace/withPolicyAndFullscreenLoading.tsx b/src/pages/workspace/withPolicyAndFullscreenLoading.tsx index 19201311c5d7..892facb92823 100644 --- a/src/pages/workspace/withPolicyAndFullscreenLoading.tsx +++ b/src/pages/workspace/withPolicyAndFullscreenLoading.tsx @@ -1,12 +1,12 @@ import isEmpty from 'lodash/isEmpty'; import type {ComponentType, ForwardedRef, RefAttributes} from 'react'; -import React, { forwardRef} from 'react'; +import React, {forwardRef} from 'react'; import type {OnyxEntry} from 'react-native-onyx'; -import { withOnyx} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import FullscreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import compose from '@libs/compose'; import ONYXKEYS from '@src/ONYXKEYS'; -import type { WithPolicyOnyxProps, WithPolicyProps} from './withPolicy'; +import type {WithPolicyOnyxProps, WithPolicyProps} from './withPolicy'; import withPolicy, {policyDefaultProps} from './withPolicy'; type WithPolicyAndFullscreenLoadingOnyxProps = { diff --git a/src/styles/index.ts b/src/styles/index.ts index 52449b8e9733..7eb5e9345bef 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -3,7 +3,7 @@ import type {LineLayerStyleProps} from '@rnmapbox/maps/src/utils/MapboxStyles'; import lodashClamp from 'lodash/clamp'; import type {LineLayer} from 'react-map-gl'; import type {AnimatableNumericValue, Animated, ImageStyle, TextStyle, ViewStyle} from 'react-native'; -import { StyleSheet} from 'react-native'; +import {StyleSheet} from 'react-native'; import type {CustomAnimation} from 'react-native-animatable'; import type {PickerStyle} from 'react-native-picker-select'; import type {MixedStyleDeclaration, MixedStyleRecord} from 'react-native-render-html'; diff --git a/src/styles/utils/generators/TooltipStyleUtils.ts b/src/styles/utils/generators/TooltipStyleUtils.ts index 86b1a7f90482..90cef9a6f568 100644 --- a/src/styles/utils/generators/TooltipStyleUtils.ts +++ b/src/styles/utils/generators/TooltipStyleUtils.ts @@ -1,4 +1,4 @@ -import type { TextStyle, View, ViewStyle} from 'react-native'; +import type {TextStyle, View, ViewStyle} from 'react-native'; import {Animated} from 'react-native'; import fontFamily from '@styles/utils/fontFamily'; import positioning from '@styles/utils/positioning'; diff --git a/src/styles/utils/index.ts b/src/styles/utils/index.ts index d262f19e10cb..b3b4924ebb19 100644 --- a/src/styles/utils/index.ts +++ b/src/styles/utils/index.ts @@ -1,5 +1,5 @@ import type {Animated, DimensionValue, ImageStyle, PressableStateCallbackType, StyleProp, TextStyle, ViewStyle} from 'react-native'; -import { StyleSheet} from 'react-native'; +import {StyleSheet} from 'react-native'; import type {EdgeInsets} from 'react-native-safe-area-context'; import type {ValueOf} from 'type-fest'; import * as Browser from '@libs/Browser'; @@ -10,7 +10,7 @@ import type {ThemeColors} from '@styles/theme/types'; import variables from '@styles/variables'; import CONST from '@src/CONST'; import type {Transaction} from '@src/types/onyx'; -import {defaultStyles } from '..'; +import {defaultStyles} from '..'; import type {ThemeStyles} from '..'; import containerComposeStyles from './containerComposeStyles'; import fontFamily from './fontFamily'; From 062c1066e441939eb105c2d8024cf10cc406ed6b Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 19:07:38 +0100 Subject: [PATCH 108/130] remove extra type keyword --- src/styles/theme/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/theme/index.ts b/src/styles/theme/index.ts index fcb22dcba2d2..f1078e231c9e 100644 --- a/src/styles/theme/index.ts +++ b/src/styles/theme/index.ts @@ -1,7 +1,7 @@ import CONST from '@src/CONST'; import darkTheme from './themes/dark'; import lightTheme from './themes/light'; -import type { ThemePreferenceWithoutSystem,type ThemeColors} from './types'; +import type {ThemeColors, ThemePreferenceWithoutSystem} from './types'; const themes = { [CONST.THEME.LIGHT]: lightTheme, From bd7e845abd6ec15531454123694bf2fdc4d0d5d7 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Wed, 3 Jan 2024 13:23:38 -0500 Subject: [PATCH 109/130] feat(Violations): fix missingComment translation --- src/languages/en.ts | 2 +- src/languages/es.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index c222afa85371..6e177c1df141 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2062,7 +2062,7 @@ export default { invoiceMarkup: ({invoiceMarkup}: ViolationsInvoiceMarkupParams) => `Marked up by ${invoiceMarkup}%`, maxAge: ({maxAge}: ViolationsMaxAgeParams) => `Date older than ${maxAge} days`, missingCategory: 'Missing category', - missingComment: 'Missing comment', + missingComment: 'Description required for selected category', missingTag: ({tagName}: ViolationsMissingTagParams) => `Missing ${tagName ?? 'tag'}`, modifiedAmount: 'Amount greater than scanned receipt', modifiedDate: 'Date differs from scanned receipt', diff --git a/src/languages/es.ts b/src/languages/es.ts index 1812fa35a29c..990554b0b502 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2549,7 +2549,7 @@ export default { invoiceMarkup: ({invoiceMarkup}: ViolationsInvoiceMarkupParams) => `Incrementado un ${invoiceMarkup}%`, maxAge: ({maxAge}: ViolationsMaxAgeParams) => `Fecha de más de ${maxAge} días`, missingCategory: 'Falta categoría', - missingComment: 'Falta comentario', + missingComment: 'Descripción obligatoria para categoría seleccionada', missingTag: ({tagName}: ViolationsMissingTagParams) => `Falta ${tagName}`, modifiedAmount: 'Importe superior al del recibo escaneado', modifiedDate: 'Fecha difiere del recibo escaneado', From e48bd27c9a80bf5778b787af3ea7447a964a39e2 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 19:53:06 +0100 Subject: [PATCH 110/130] add eslint-plugin-import --- package-lock.json | 345 ++++++++++++++++++++++++++++++---------------- package.json | 1 + 2 files changed, 224 insertions(+), 122 deletions(-) diff --git a/package-lock.json b/package-lock.json index c8b4b2ba2082..7baee8078d3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -201,6 +201,7 @@ "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-expensify": "^2.0.43", "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-jest": "^24.1.0", "eslint-plugin-jsdoc": "^46.2.6", "eslint-plugin-jsx-a11y": "^6.6.1", @@ -21202,8 +21203,7 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/keyv": { "version": "3.1.4", @@ -23403,15 +23403,15 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -23448,15 +23448,34 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -23467,14 +23486,14 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -30582,12 +30601,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -30595,15 +30616,15 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.7.4", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -30621,7 +30642,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -30719,23 +30739,28 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -30745,11 +30770,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -30765,12 +30791,14 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT" + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/eslint-plugin-jest": { "version": "24.7.0", @@ -33493,10 +33521,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -34214,6 +34244,17 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -35900,11 +35941,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -44759,14 +44800,14 @@ } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -44792,6 +44833,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, "node_modules/object.hasown": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", @@ -44819,14 +44872,14 @@ } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -53277,12 +53330,13 @@ "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { - "version": "3.14.1", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } @@ -53304,7 +53358,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -73074,15 +73127,15 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" } }, @@ -73101,27 +73154,40 @@ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "devOptional": true }, + "array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, @@ -78429,11 +78495,14 @@ "requires": {} }, "eslint-import-resolver-node": { - "version": "0.3.6", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { @@ -78448,7 +78517,9 @@ } }, "eslint-module-utils": { - "version": "2.7.4", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, "requires": { "debug": "^3.2.7" @@ -78520,29 +78591,37 @@ } }, "eslint-plugin-import": { - "version": "2.26.0", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "dependencies": { "debug": { - "version": "2.6.9", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -78554,10 +78633,10 @@ "esutils": "^2.0.2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -80424,9 +80503,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -80914,6 +80993,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -82096,11 +82183,11 @@ } }, "is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-data-descriptor": { @@ -88377,14 +88464,14 @@ } }, "object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.getownpropertydescriptors": { @@ -88397,6 +88484,18 @@ "es-abstract": "^1.20.1" } }, + "object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, "object.hasown": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", @@ -88417,14 +88516,14 @@ } }, "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "objectorarray": { @@ -94475,11 +94574,13 @@ "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==" }, "tsconfig-paths": { - "version": "3.14.1", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, diff --git a/package.json b/package.json index bd4b8ffacedf..f89a66d1a0d8 100644 --- a/package.json +++ b/package.json @@ -249,6 +249,7 @@ "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-expensify": "^2.0.43", "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-jest": "^24.1.0", "eslint-plugin-jsdoc": "^46.2.6", "eslint-plugin-jsx-a11y": "^6.6.1", From de75fdb9223d3a9b5f6ec5a175764a3f7ef628f3 Mon Sep 17 00:00:00 2001 From: Rory Abraham <47436092+roryabraham@users.noreply.github.com> Date: Wed, 3 Jan 2024 11:03:56 -0800 Subject: [PATCH 111/130] Revert "Fix/26946: Reset amount when edit waypoint" --- src/CONST.ts | 1 - src/libs/actions/IOU.js | 9 --------- src/libs/actions/Transaction.ts | 4 ---- 3 files changed, 14 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 0c98645511d4..b5563825e016 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1177,7 +1177,6 @@ const CONST = { EXPENSIFY: 'Expensify', VBBA: 'ACH', }, - DEFAULT_AMOUNT: 0, TYPE: { SEND: 'send', SPLIT: 'split', diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 511c299dda54..b999435cc3e7 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -181,14 +181,6 @@ function setMoneyRequestAmount_temporaryForRefactor(transactionID, amount, curre Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {amount, currency}); } -/** - * Reset the money request amount, discarding the user-provided value. In the case of distance requests, this will effectively re-enable the default behavior of automatic amount calculation. - * @param {String} transactionID - */ -function resetMoneyRequestAmount_temporaryForRefactor(transactionID) { - Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {amount: CONST.IOU.DEFAULT_AMOUNT}); -} - /** * @param {String} transactionID * @param {String} created @@ -3503,5 +3495,4 @@ export { detachReceipt, getIOUReportID, editMoneyRequest, - resetMoneyRequestAmount_temporaryForRefactor, }; diff --git a/src/libs/actions/Transaction.ts b/src/libs/actions/Transaction.ts index 951851d72eb3..2132ae1bdc61 100644 --- a/src/libs/actions/Transaction.ts +++ b/src/libs/actions/Transaction.ts @@ -10,7 +10,6 @@ import ONYXKEYS from '@src/ONYXKEYS'; import {RecentWaypoint, Transaction} from '@src/types/onyx'; import {OnyxData} from '@src/types/onyx/Request'; import {WaypointCollection} from '@src/types/onyx/Transaction'; -import * as IOU from './IOU'; let recentWaypoints: RecentWaypoint[] = []; Onyx.connect({ @@ -59,7 +58,6 @@ function addStop(transactionID: string) { } function saveWaypoint(transactionID: string, index: string, waypoint: RecentWaypoint | null, isDraft = false) { - IOU.resetMoneyRequestAmount_temporaryForRefactor(transactionID); Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION : ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, { comment: { waypoints: { @@ -102,7 +100,6 @@ function saveWaypoint(transactionID: string, index: string, waypoint: RecentWayp } function removeWaypoint(transaction: Transaction, currentIndex: string, isDraft: boolean) { - IOU.resetMoneyRequestAmount_temporaryForRefactor(transaction.transactionID); // Index comes from the route params and is a string const index = Number(currentIndex); const existingWaypoints = transaction?.comment?.waypoints ?? {}; @@ -243,7 +240,6 @@ function getRouteForDraft(transactionID: string, waypoints: WaypointCollection) * which will replace the existing ones. */ function updateWaypoints(transactionID: string, waypoints: WaypointCollection, isDraft = false): Promise { - IOU.resetMoneyRequestAmount_temporaryForRefactor(transactionID); return Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, { comment: { waypoints, From b6c1a37c7fb2bd030ba3f4330c4f09c509e7f722 Mon Sep 17 00:00:00 2001 From: rory Date: Wed, 3 Jan 2024 11:20:08 -0800 Subject: [PATCH 112/130] Set DEVELOPER_DIR for iOS only --- .github/workflows/platformDeploy.yml | 3 ++- .github/workflows/testBuild.yml | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/platformDeploy.yml b/.github/workflows/platformDeploy.yml index 6aeecb3b4e05..813c341caaf6 100644 --- a/.github/workflows/platformDeploy.yml +++ b/.github/workflows/platformDeploy.yml @@ -10,7 +10,6 @@ on: env: SHOULD_DEPLOY_PRODUCTION: ${{ github.event_name == 'release' }} - DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer concurrency: group: ${{ github.workflow }}-${{ github.event_name }} @@ -174,6 +173,8 @@ jobs: name: Build and deploy iOS needs: validateActor if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} + env: + DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer runs-on: macos-13-xlarge steps: - name: Checkout diff --git a/.github/workflows/testBuild.yml b/.github/workflows/testBuild.yml index 8b18b8aa5d53..25a14fb27e1b 100644 --- a/.github/workflows/testBuild.yml +++ b/.github/workflows/testBuild.yml @@ -10,9 +10,6 @@ on: types: [opened, synchronize, labeled] branches: ['*ci-test/**'] -env: - DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer - jobs: validateActor: runs-on: ubuntu-latest @@ -139,6 +136,7 @@ jobs: if: ${{ fromJSON(needs.validateActor.outputs.READY_TO_BUILD) }} env: PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} + DEVELOPER_DIR: /Applications/Xcode_15.0.1.app/Contents/Developer runs-on: macos-13-xlarge steps: - name: Checkout From 8c5f3a7f2cdc527acc19ee21c376e41be157d361 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Wed, 3 Jan 2024 22:16:42 +0100 Subject: [PATCH 113/130] fix: eslint --- src/components/ScreenWrapper.tsx | 12 +++++++----- .../BaseUserDetailsTooltip/index.native.tsx | 2 +- .../BaseUserDetailsTooltip/index.tsx | 2 +- src/components/UserDetailsTooltip/index.tsx | 2 +- src/components/UserDetailsTooltip/types.tsx | 6 +++--- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/components/ScreenWrapper.tsx b/src/components/ScreenWrapper.tsx index 9a7dc8de633a..0653e2ff8577 100644 --- a/src/components/ScreenWrapper.tsx +++ b/src/components/ScreenWrapper.tsx @@ -1,9 +1,11 @@ import {useNavigation} from '@react-navigation/native'; -import {StackNavigationProp} from '@react-navigation/stack'; -import React, {ForwardedRef, forwardRef, ReactNode, useEffect, useRef, useState} from 'react'; -import {DimensionValue, Keyboard, PanResponder, StyleProp, View, ViewStyle} from 'react-native'; +import type {StackNavigationProp} from '@react-navigation/stack'; +import type {ForwardedRef, ReactNode} from 'react'; +import React, {forwardRef, useEffect, useRef, useState} from 'react'; +import type {DimensionValue, StyleProp, ViewStyle} from 'react-native'; +import {Keyboard, PanResponder, View} from 'react-native'; import {PickerAvoidingView} from 'react-native-picker-select'; -import {EdgeInsets} from 'react-native-safe-area-context'; +import type {EdgeInsets} from 'react-native-safe-area-context'; import useEnvironment from '@hooks/useEnvironment'; import useInitialDimensions from '@hooks/useInitialWindowDimensions'; import useKeyboardState from '@hooks/useKeyboardState'; @@ -11,7 +13,7 @@ import useNetwork from '@hooks/useNetwork'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import * as Browser from '@libs/Browser'; -import {RootStackParamList} from '@libs/Navigation/types'; +import type {RootStackParamList} from '@libs/Navigation/types'; import toggleTestToolsModal from '@userActions/TestTool'; import CONST from '@src/CONST'; import CustomDevMenu from './CustomDevMenu'; diff --git a/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.native.tsx b/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.native.tsx index e490cb13c66b..6a0f59af5e03 100644 --- a/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.native.tsx +++ b/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.native.tsx @@ -1,4 +1,4 @@ -import UserDetailsTooltipProps from '@components/UserDetailsTooltip/types'; +import type UserDetailsTooltipProps from '@components/UserDetailsTooltip/types'; function BaseUserDetailsTooltip({children}: UserDetailsTooltipProps) { return children; diff --git a/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.tsx b/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.tsx index a5132fc0c391..0df9993f8c69 100644 --- a/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.tsx +++ b/src/components/UserDetailsTooltip/BaseUserDetailsTooltip/index.tsx @@ -4,7 +4,7 @@ import {Text, View} from 'react-native'; import Avatar from '@components/Avatar'; import {usePersonalDetails} from '@components/OnyxProvider'; import Tooltip from '@components/Tooltip'; -import UserDetailsTooltipProps from '@components/UserDetailsTooltip/types'; +import type UserDetailsTooltipProps from '@components/UserDetailsTooltip/types'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import * as LocalePhoneNumber from '@libs/LocalePhoneNumber'; diff --git a/src/components/UserDetailsTooltip/index.tsx b/src/components/UserDetailsTooltip/index.tsx index 1ae1688072c9..0d6bb3c3c603 100644 --- a/src/components/UserDetailsTooltip/index.tsx +++ b/src/components/UserDetailsTooltip/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import BaseUserDetailsTooltip from './BaseUserDetailsTooltip'; -import UserDetailsTooltipProps from './types'; +import type UserDetailsTooltipProps from './types'; function UserDetailsTooltip({shouldRender = true, children, ...props}: UserDetailsTooltipProps) { if (!shouldRender) { diff --git a/src/components/UserDetailsTooltip/types.tsx b/src/components/UserDetailsTooltip/types.tsx index 494bb82211e2..b362c44877a9 100644 --- a/src/components/UserDetailsTooltip/types.tsx +++ b/src/components/UserDetailsTooltip/types.tsx @@ -1,6 +1,6 @@ -import {AvatarSource} from '@libs/UserUtils'; -import {AvatarType} from '@src/types/onyx/OnyxCommon'; -import ChildrenProps from '@src/types/utils/ChildrenProps'; +import type {AvatarSource} from '@libs/UserUtils'; +import type {AvatarType} from '@src/types/onyx/OnyxCommon'; +import type ChildrenProps from '@src/types/utils/ChildrenProps'; type FallbackUserDetails = { /** The name to display in bold */ From cccbecd1608deae31daa914330879fbb9f7c1362 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Wed, 3 Jan 2024 22:43:06 +0000 Subject: [PATCH 114/130] Update version to 1.4.21-2 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index e93150b48fca..0285c1edfab8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -96,8 +96,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001042101 - versionName "1.4.21-1" + versionCode 1001042102 + versionName "1.4.21-2" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index f267261a49c0..1c36b2aed07f 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.4.21.1 + 1.4.21.2 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index f95a3f871d4c..8f91fb23f41e 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.4.21.1 + 1.4.21.2 diff --git a/package-lock.json b/package-lock.json index db30966b8aa1..e5feabfdece4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.4.21-1", + "version": "1.4.21-2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.4.21-1", + "version": "1.4.21-2", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 233bf69e27de..f4d278a90e49 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.4.21-1", + "version": "1.4.21-2", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", From 3b85e1f528e33b1e10ff05166a5490931e35e5c6 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Wed, 3 Jan 2024 23:41:13 +0000 Subject: [PATCH 115/130] Update version to 1.4.21-3 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 0285c1edfab8..ad64afb89f98 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -96,8 +96,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001042102 - versionName "1.4.21-2" + versionCode 1001042103 + versionName "1.4.21-3" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 1c36b2aed07f..47bacbf36415 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.4.21.2 + 1.4.21.3 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 8f91fb23f41e..87e0180d859a 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.4.21.2 + 1.4.21.3 diff --git a/package-lock.json b/package-lock.json index e5feabfdece4..0f9eaf65e740 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.4.21-2", + "version": "1.4.21-3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.4.21-2", + "version": "1.4.21-3", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index f4d278a90e49..79dc4f1143ec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.4.21-2", + "version": "1.4.21-3", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", From 4b9b55e01315ec2d2dd36c7fd0d02256b9a14a37 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Thu, 4 Jan 2024 00:57:26 +0000 Subject: [PATCH 116/130] Update version to 1.4.21-4 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ad64afb89f98..4c6289456041 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -96,8 +96,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001042103 - versionName "1.4.21-3" + versionCode 1001042104 + versionName "1.4.21-4" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 47bacbf36415..ac41382486a5 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.4.21.3 + 1.4.21.4 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 87e0180d859a..ab58f3c293bd 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.4.21.3 + 1.4.21.4 diff --git a/package-lock.json b/package-lock.json index 0f9eaf65e740..15964d8c5f3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.4.21-3", + "version": "1.4.21-4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.4.21-3", + "version": "1.4.21-4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 79dc4f1143ec..29ade80b518d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.4.21-3", + "version": "1.4.21-4", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", From 25b51211fca31e4e6902d9ab2f0619279655a87e Mon Sep 17 00:00:00 2001 From: Pavlo Tsimura Date: Thu, 4 Jan 2024 07:15:12 +0100 Subject: [PATCH 117/130] Create new rooms with notification: always --- src/pages/workspace/WorkspaceNewRoomPage.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pages/workspace/WorkspaceNewRoomPage.js b/src/pages/workspace/WorkspaceNewRoomPage.js index f0c3d3ada0c2..2576e9622b95 100644 --- a/src/pages/workspace/WorkspaceNewRoomPage.js +++ b/src/pages/workspace/WorkspaceNewRoomPage.js @@ -132,9 +132,7 @@ function WorkspaceNewRoomPage(props) { '', visibility, writeCapability || CONST.REPORT.WRITE_CAPABILITIES.ALL, - - // The room might contain all policy members so notifying always should be opt-in only. - CONST.REPORT.NOTIFICATION_PREFERENCE.DAILY, + CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS, '', '', parsedWelcomeMessage, From 83ec5c7660aa630e8d820ae950d9c24a0acc72ab Mon Sep 17 00:00:00 2001 From: Pujan Date: Thu, 4 Jan 2024 15:04:32 +0530 Subject: [PATCH 118/130] prettier fix --- src/libs/actions/IOU.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 3740d379e950..db6aefb84e38 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -930,14 +930,14 @@ function getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, t }, }); failureData.push({ - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${transactionThread.reportID}`, - value: { - [updatedReportAction.reportActionID]: { - errors: ErrorUtils.getMicroSecondOnyxError('iou.error.genericEditFailureMessage'), - }, - }, - }) + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${transactionThread.reportID}`, + value: { + [updatedReportAction.reportActionID]: { + errors: ErrorUtils.getMicroSecondOnyxError('iou.error.genericEditFailureMessage'), + }, + }, + }); // Step 4: Compute the IOU total and update the report preview message (and report header) so LHN amount owed is correct. // Should only update if the transaction matches the currency of the report, else we wait for the update From 8c82903f7b94c7e8247d97176d7d2463e082343a Mon Sep 17 00:00:00 2001 From: Nam Le Date: Thu, 4 Jan 2024 19:11:04 +0700 Subject: [PATCH 119/130] fix crash ios --- src/libs/ReceiptUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReceiptUtils.ts b/src/libs/ReceiptUtils.ts index 734c40271208..1adb5957587b 100644 --- a/src/libs/ReceiptUtils.ts +++ b/src/libs/ReceiptUtils.ts @@ -66,7 +66,7 @@ function getThumbnailAndImageURIs(transaction: Transaction, receiptPath: string image = ReceiptSVG; } - const isLocalFile = path.startsWith('blob:') || path.startsWith('file:'); + const isLocalFile = typeof path === 'number' || path.startsWith('blob:') || path.startsWith('file:'); return {thumbnail: image, image: path, isLocalFile}; } From 501fe5b6b1954395c718d493dcb31bec802041e0 Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Thu, 4 Jan 2024 12:13:13 +0000 Subject: [PATCH 120/130] fix consistent-type-imports lint warning --- src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx index 8c1eb5b66871..2126409231b8 100644 --- a/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx +++ b/src/pages/workspace/invoices/WorkspaceInvoicesPage.tsx @@ -1,10 +1,10 @@ -import {StackScreenProps} from '@react-navigation/stack'; +import type {StackScreenProps} from '@react-navigation/stack'; import React from 'react'; import useLocalize from '@hooks/useLocalize'; -import {SettingsNavigatorParamList} from '@libs/Navigation/types'; +import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import WorkspacePageWithSections from '@pages/workspace/WorkspacePageWithSections'; import CONST from '@src/CONST'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import WorkspaceInvoicesNoVBAView from './WorkspaceInvoicesNoVBAView'; import WorkspaceInvoicesVBAView from './WorkspaceInvoicesVBAView'; From d5f5856b610cc39d5b5f2b054dab67bb74d66922 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Thu, 4 Jan 2024 12:44:31 +0000 Subject: [PATCH 121/130] Update version to 1.4.21-5 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4c6289456041..7b96e1133366 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -96,8 +96,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001042104 - versionName "1.4.21-4" + versionCode 1001042105 + versionName "1.4.21-5" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index ac41382486a5..a8da53ed57a7 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.4.21.4 + 1.4.21.5 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index ab58f3c293bd..20c2d8e334bf 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.4.21.4 + 1.4.21.5 diff --git a/package-lock.json b/package-lock.json index 4c28fc812676..ac88e9262f53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.4.21-4", + "version": "1.4.21-5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.4.21-4", + "version": "1.4.21-5", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 0da85ade20f5..550e7ca12dd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.4.21-4", + "version": "1.4.21-5", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", From 444fb6401cf783aa83b151e25e2c367923aa1d47 Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Thu, 4 Jan 2024 15:36:02 +0100 Subject: [PATCH 122/130] Add line height style to the next steps --- src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js index 0b5cbad29983..8d6be80c6ca7 100755 --- a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js +++ b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js @@ -62,7 +62,7 @@ function BaseHTMLEngineProvider(props) { 'mention-here': defaultHTMLElementModels.span.extend({tagName: 'mention-here'}), 'next-step': defaultHTMLElementModels.span.extend({ tagName: 'next-step', - mixedUAStyles: {...styles.textLabelSupporting}, + mixedUAStyles: {...styles.textLabelSupporting, ...styles.lh16}, }), 'next-step-email': defaultHTMLElementModels.span.extend({tagName: 'next-step-email'}), video: defaultHTMLElementModels.div.extend({ From daf8d0de590ff3a89d497e9f9b16532f01c340a7 Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Thu, 4 Jan 2024 15:56:52 +0100 Subject: [PATCH 123/130] Add the style to the dependency array --- src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js index 8d6be80c6ca7..f9b70e43e279 100755 --- a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js +++ b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js @@ -70,7 +70,7 @@ function BaseHTMLEngineProvider(props) { mixedUAStyles: {whiteSpace: 'pre'}, }), }), - [styles.colorMuted, styles.formError, styles.mb0, styles.textLabelSupporting], + [styles.colorMuted, styles.formError, styles.mb0, styles.textLabelSupporting, styles.lh16], ); // We need to memoize this prop to make it referentially stable. From c191e78e71a236bfd27d8c34d645d32e0f0e4753 Mon Sep 17 00:00:00 2001 From: Pujan Date: Thu, 4 Jan 2024 21:33:58 +0530 Subject: [PATCH 124/130] dry for failureData --- src/libs/actions/IOU.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index db6aefb84e38..216b613d4577 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -922,20 +922,14 @@ function getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, t [updatedReportAction.reportActionID]: {pendingAction: null}, }, }); - failureData.push({ - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${transactionThread.reportID}`, - value: { - [updatedReportAction.reportActionID]: updatedReportAction, - }, - }); failureData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${transactionThread.reportID}`, value: { [updatedReportAction.reportActionID]: { + ...updatedReportAction, errors: ErrorUtils.getMicroSecondOnyxError('iou.error.genericEditFailureMessage'), - }, + } }, }); From 1271e8f320f113577fed2bc91d3818d7fba57b17 Mon Sep 17 00:00:00 2001 From: Pujan Date: Thu, 4 Jan 2024 21:38:43 +0530 Subject: [PATCH 125/130] prettier --- src/libs/actions/IOU.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 216b613d4577..a767722998b8 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -929,7 +929,7 @@ function getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, t [updatedReportAction.reportActionID]: { ...updatedReportAction, errors: ErrorUtils.getMicroSecondOnyxError('iou.error.genericEditFailureMessage'), - } + }, }, }); From 862ab76b9be7f9b75e6f662cd9b5127956c6ec9e Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Thu, 4 Jan 2024 11:49:54 -0500 Subject: [PATCH 126/130] feat(Violations): fix types broken by merge --- src/components/ViolationMessages.tsx | 2 +- src/libs/ViolationsUtils.ts | 4 ++-- src/types/onyx/index.ts | 6 ++---- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/components/ViolationMessages.tsx b/src/components/ViolationMessages.tsx index 310c2deafee5..8eb555184596 100644 --- a/src/components/ViolationMessages.tsx +++ b/src/components/ViolationMessages.tsx @@ -3,7 +3,7 @@ import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import ViolationsUtils from '@libs/ViolationsUtils'; -import {TransactionViolation} from '@src/types/onyx'; +import type {TransactionViolation} from '@src/types/onyx'; import Text from './Text'; export default function ViolationMessages({violations, isLast}: {violations: TransactionViolation[]; isLast?: boolean}) { diff --git a/src/libs/ViolationsUtils.ts b/src/libs/ViolationsUtils.ts index 4031b5611f1e..2637686e726b 100644 --- a/src/libs/ViolationsUtils.ts +++ b/src/libs/ViolationsUtils.ts @@ -1,9 +1,9 @@ import reject from 'lodash/reject'; import Onyx from 'react-native-onyx'; -import {TranslationPaths} from '@src/languages/types'; +import type {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import type {PolicyCategories, PolicyTags, Transaction, TransactionViolation} from '@src/types/onyx'; -import {Phrase, PhraseParameters} from './Localize'; +import type {Phrase, PhraseParameters} from './Localize'; const ViolationsUtils = { /** diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index de71202dcc2a..7bd9c321be5e 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -27,13 +27,11 @@ import type {PersonalDetailsList} from './PersonalDetails'; import type PersonalDetails from './PersonalDetails'; import type PlaidData from './PlaidData'; import type Policy from './Policy'; -import type {PolicyCategories} from './PolicyCategory'; -import type PolicyCategory from './PolicyCategory'; +import type {PolicyCategories, PolicyCategory} from './PolicyCategory'; import type {PolicyMembers} from './PolicyMember'; import type PolicyMember from './PolicyMember'; import type PolicyReportField from './PolicyReportField'; -import type {PolicyTags} from './PolicyTag'; -import type PolicyTag from './PolicyTag'; +import type {PolicyTag, PolicyTags} from './PolicyTag'; import type PrivatePersonalDetails from './PrivatePersonalDetails'; import type RecentlyUsedCategories from './RecentlyUsedCategories'; import type RecentlyUsedReportFields from './RecentlyUsedReportFields'; From c248cbb807f740bf2dd91fba7b9b59fe153979a8 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Thu, 4 Jan 2024 11:58:24 -0500 Subject: [PATCH 127/130] feat(Violations): fix types broken by merge --- src/types/onyx/TransactionViolation.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index ef86e802ce66..1bff3471fa7f 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,4 +1,7 @@ -import CONST from '@src/CONST'; +// We need the runtime value of CONST here, because it's declared `as const` +// but the linter rule incorrectly identifies it as a type-only import. +// eslint-disable-next-line @typescript-eslint/consistent-type-importsgit +import type CONST from '@src/CONST'; /** * Names of violations. From 095b2280a4c28704920024c96f82c69683e1a497 Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Thu, 4 Jan 2024 11:58:38 -0500 Subject: [PATCH 128/130] feat(Violations): fix types broken by merge --- src/types/onyx/TransactionViolation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 1bff3471fa7f..8ab494ce00aa 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,6 +1,6 @@ // We need the runtime value of CONST here, because it's declared `as const` // but the linter rule incorrectly identifies it as a type-only import. -// eslint-disable-next-line @typescript-eslint/consistent-type-importsgit +// eslint-disable-next-line @typescript-eslint/consistent-type-imports import type CONST from '@src/CONST'; /** From ac9c5644a46a6ff96b8b22e15b4b2d784e8db07a Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Thu, 4 Jan 2024 11:59:11 -0500 Subject: [PATCH 129/130] feat(Violations): wrapping --- src/types/onyx/TransactionViolation.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 8ab494ce00aa..59f01edb30b5 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,5 +1,4 @@ -// We need the runtime value of CONST here, because it's declared `as const` -// but the linter rule incorrectly identifies it as a type-only import. +// We need the runtime value of CONST here, because it's declared `as const` but the linter rule incorrectly identifies it as a type-only import. // eslint-disable-next-line @typescript-eslint/consistent-type-imports import type CONST from '@src/CONST'; From 8057dc4603df4e95784d1bdbca408dcd1ca9a2cd Mon Sep 17 00:00:00 2001 From: Trevor Coleman Date: Thu, 4 Jan 2024 11:59:45 -0500 Subject: [PATCH 130/130] feat(Violations): remove comment --- src/types/onyx/TransactionViolation.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/types/onyx/TransactionViolation.ts b/src/types/onyx/TransactionViolation.ts index 59f01edb30b5..dd7a9ef65746 100644 --- a/src/types/onyx/TransactionViolation.ts +++ b/src/types/onyx/TransactionViolation.ts @@ -1,5 +1,3 @@ -// We need the runtime value of CONST here, because it's declared `as const` but the linter rule incorrectly identifies it as a type-only import. -// eslint-disable-next-line @typescript-eslint/consistent-type-imports import type CONST from '@src/CONST'; /**